【发布时间】:2015-11-15 20:54:30
【问题描述】:
我正在使用 Actionscript 的 XML 类来读取和修改 Word OpenXML 文档。出于某种原因,在我修改完 XML 之后,将其转换回字符串会从文本节点中删除空格。实际上,这不是真的,因为未修改的 XML 文档也没有这些空格,但它们仍然出现在 word 文档中。事实上,如果我对文档内容所做的只是使用 XML 解析器对其进行解析,然后将其转换回字符串,那么未修改的 XML 与通过解析器的 XML 之间的唯一区别是 xml: 命名空间前缀从w:t 节点的space 属性中删除。
未改动的 XML 示例:
<w:p w:rsidR="0012761D" w:rsidRPr="004F0FA6" w:rsidRDefault="0012761D" w:rsidP="004F0FA6">
<w:pPr>
<w:rPr>
<w:rFonts w:ascii="Gotham Book" w:hAnsi="Gotham Book"/>
<w:b w:val="0"/>
<w:sz w:val="20"/>
<w:szCs w:val="20"/>
</w:rPr>
</w:pPr>
<w:r w:rsidRPr="004F0FA6">
<w:rPr>
<w:rFonts w:ascii="Gotham Book" w:hAnsi="Gotham Book"/>
<w:b w:val="0"/>
<w:sz w:val="20"/>
<w:szCs w:val="20"/>
</w:rPr>
<w:t xml:space="preserve">Distance</w:t>
</w:r>
<w:r w:rsidR="004F0FA6">
<w:rPr>
<w:rFonts w:ascii="Gotham Book" w:hAnsi="Gotham Book"/>
<w:b w:val="0"/>
<w:sz w:val="20"/>
<w:szCs w:val="20"/>
</w:rPr>
<w:t>at</w:t>
</w:r>
<w:r w:rsidRPr="004F0FA6">
<w:rPr>
<w:rFonts w:ascii="Gotham Book" w:hAnsi="Gotham Book"/>
<w:b w:val="0"/>
<w:sz w:val="20"/>
<w:szCs w:val="20"/>
</w:rPr>
<w:t xml:space="preserve">SL, ISA, MTOW</w:t>
</w:r>
</w:p>
通过 Actionscript 解析器的 XML 示例:
<w:p w:rsidR="0012761D" w:rsidRPr="004F0FA6" w:rsidRDefault="0012761D" w:rsidP="004F0FA6">
<w:pPr>
<w:rPr>
<w:rFonts w:ascii="Gotham Book" w:hAnsi="Gotham Book"/>
<w:b w:val="0"/>
<w:sz w:val="20"/>
<w:szCs w:val="20"/>
</w:rPr>
</w:pPr>
<w:r w:rsidRPr="004F0FA6">
<w:rPr>
<w:rFonts w:ascii="Gotham Book" w:hAnsi="Gotham Book"/>
<w:b w:val="0"/>
<w:sz w:val="20"/>
<w:szCs w:val="20"/>
</w:rPr>
<w:t space="preserve">Distance</w:t>
</w:r>
<w:r w:rsidR="004F0FA6">
<w:rPr>
<w:rFonts w:ascii="Gotham Book" w:hAnsi="Gotham Book"/>
<w:b w:val="0"/>
<w:sz w:val="20"/>
<w:szCs w:val="20"/>
</w:rPr>
<w:t>at</w:t>
</w:r>
<w:r w:rsidRPr="004F0FA6">
<w:rPr>
<w:rFonts w:ascii="Gotham Book" w:hAnsi="Gotham Book"/>
<w:b w:val="0"/>
<w:sz w:val="20"/>
<w:szCs w:val="20"/>
</w:rPr>
<w:t space="preserve">SL, ISA, MTOW</w:t>
</w:r>
</w:p>
第一个示例生成“距离 SL、ISA、MTOW”,而第二个示例的文档生成“DistanceatSL、ISA、MTOW”。
如您所见,唯一的区别在于<w:t xml:space="preserve">Distance</w:t> 和<w:t space="preserve">Distance</w:t>。
所以我尝试手动将xml:前缀添加到空间属性,但这没有任何效果。
我还尝试将 XML 类的 prettyPrinting 属性设置为 false,但它以某种方式损坏了文档。
是否还有其他原因可能导致这些缺失的空格?
谢谢。
【问题讨论】:
-
您应该提供更多的 XML,尤其是包含命名空间定义的部分。据我所知,您展示的部分不是有效的 XML。 (从 AS3 的角度来看,它最多是一个 XMLList)
-
您的问题是“xml”前缀的抑制。
xml:space='preserve'表示保留空格,space='preserve'表示什么都没有,所以不再显示空格。 -
是的,我也是这么想的。通过查看完整的 XML 结构,我希望获得有关已配置名称空间的更多信息,以便了解为什么要删除此名称空间。
-
抱歉,我弄乱了示例中的格式(
</w:p>结束标记不可见)。样本构成w:tc节点中的一个w:p节点w:tr节点中的w:tbl节点中w:body节点中的w:document节点中。我确实尝试将xml:前缀添加到space属性,但没有结果。 -
整个XML结构非常庞大。
标签: xml actionscript openxml