【发布时间】: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