【问题标题】:Is there a way to get a nodes original XML string value from a node?有没有办法从节点获取节点原始 XML 字符串值?
【发布时间】:2016-10-08 21:05:09
【问题描述】:

我有一个解析为 XML 文档的 XML 文档。我尝试设置 XML.ignoreWhiteSpace 和其他属性来保留文档中的空白,但没有任何效果。当我调用 node.toString() 时,空格已被删除。

是否有返回节点原始原始文本的方法?

例如,如果我有以下 XML,当我使用 toString() 或 toXMLString() 时返回的结果不同:

原文:

<s:textFlow>

    <flow:TextFlow whiteSpaceCollapse="preserve" version="3.0.0" xmlns:flow="http://ns.adobe.com/textLayout/2008"><flow:p><flow:span>A </flow:span><flow:span flow:fontWeight="bold">line</flow:span></flow:p></flow:TextFlow>
</s:textFlow>

输出:

<s:textFlow>
    <flow:TextFlow whiteSpaceCollapse="preserve" version="3.0.0" xmlns:flow="http://ns.adobe.com/textLayout/2008"><flow:p><flow:span>A</flow:span><flow:span flow:fontWeight="bold">line</flow:span></flow:p></flow:TextFlow>
</s:textFlow>

【问题讨论】:

  • 将 XML 文档解析为 XML 文档?你的意思是你把一个文件解析成一个对象?你到底在做什么?代码看起来如何?示例 XML?
  • 当您将字符串传递给新的 XML(myValue) 时,它会创建节点,然后将它们排列成结构化的 XML 对象。您可以在 Flash Builder IDE 调试视图中或在调用 toXMLString() 时看到该结构。但是,如果您设置了某些标志,例如 ignoreWhitespace,那么 XML 会发生变化,有时会发生剧烈变化,有时会很微妙。我想知道原始原始文本是否保留在节点本身以及是否有办法获取它。
  • 我希望运行时中使用的 XML 类可能已经更新,并具有此功能和其他解析功能和挂钩,就像 RegExp 引擎可能会更新discuss.as3lang.org/t/about-flash-runtime-2016/239一样。
  • 好的,这说明了很多。我怀疑是否保留了原始字符串。 XML 对象也是可变的。如何将添加的节点合并到字符串中?通常避免这种数据冗余。您可能会在第三方 XML 解析器中找到所需的内容。
  • 如果节点被修改,原始数据当然会丢失,但同样他们通过 toString 和 toXMLString() 方法的存在认识到需要它。我在这里为 XML 解析器的新版本创建了一个功能请求,bugbase.adobe.com/index.cfm?event=bug&id=4195700,如果你有机会投票的话。

标签: actionscript-3 flash


【解决方案1】:

我确定你试过了

XML.ignoreWhitespace = false;

但是你也这样做了

XML.prettyPrinting = false

【讨论】:

  • 我正在寻找一种类似于 toRawString() 的方法。我认为通过将这些标志设置为 false(以及 ignoreProcessingInstructions)我可能能够达到相同的效果,但我必须在导入之前和调用 toString 方法时设置这些标志。
  • @1.21gigawatts 为什么不检查一下,然后返回结果?
  • 似乎设置所有这些值会返回最接近原始值的值。
  • @1.21gigawatts 干杯!!
  • 谢谢!好的,在创建 XML 对象时不修改 XML 字符串很重要。所以这三个标志需要在导入时设置为 false(从字符串创建 XML),并且在调用 toString() 时这三个标志也需要设置为 false。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多