0

我正在使用 MSXMl 库来解析 xml

在我调用 put_text 然后 get_xml

输出将 < & > 转换为&lt;& &gt;

我怎样才能摆脱这个?

4

4 回答 4

4

< 和 > 禁止在文本内部使用,需要编码为 > 和 <。避免这种情况的唯一方法是为包含这些内容的文本创建一个 CDATA 部分。但是,如果您打算使用 MS XML 阅读 XMLT,您真的不需要 - 它会很好地解码这些符号,并且您会在提取的文本中得到完美的 < 和 >。

于 2009-06-18T08:09:10.213 回答
3

好吧,您正在从纯文本转换为 XML 编码文本。
这是我所期望的行为。

如果您想要输入的原始字符串,请尝试使用 get_text() 转换回文本。

如果您不希望 put_text() 在不编码 < 和 > 的情况下对文本进行编码,那么它必须位于 CData 部分内。

<![CDATA[    Text that can include < and > without encoding  ]]>
于 2009-06-18T08:18:58.960 回答
0

你得到&lt&lt;

它们的末尾应该有一个分号才能成为有效实体。

于 2009-06-18T08:11:30.660 回答
0

如果您希望将其作为文本包含在内,则可以对其进行转义。每个 xml 解析器都会对文本进行转义。

如果您希望它作为 xml 元素,则不能使用 put_text 创建它们,但需要以这种方式创建树

dataNode=xmlDoc.createElement("data")

idNode=xmlDoc.createElement("id")
textNode=xmlDoc.createTextNode("17")
idNode.appendChild(textNode)
nameNode=xmlDoc.createElement("name")
textNode=xmlDoc.createTextNode("Uday")
nameNode.appendChild(textNode)
...

dataNode.appendChild(idNode)
dataNode.appendChild(nameNode)
...

parentNode.appendChild(dataNode)

如果您用眼睛观察并希望将文本写在您可以使用 cdata 部分的文件上,那么看起来会更好。

newCDATA=xmlDoc.createCDATASection("<data><id>17</id>...</data>")
parentNode.appendChild(newCDATA)
于 2009-06-18T08:52:34.900 回答