我正在使用 MSXMl 库来解析 xml
在我调用 put_text 然后 get_xml
输出将 < & > 转换为<
& >
我怎样才能摆脱这个?
< 和 > 禁止在文本内部使用,需要编码为 > 和 <。避免这种情况的唯一方法是为包含这些内容的文本创建一个 CDATA 部分。但是,如果您打算使用 MS XML 阅读 XMLT,您真的不需要 - 它会很好地解码这些符号,并且您会在提取的文本中得到完美的 < 和 >。
好吧,您正在从纯文本转换为 XML 编码文本。
这是我所期望的行为。
如果您想要输入的原始字符串,请尝试使用 get_text() 转换回文本。
如果您不希望 put_text() 在不编码 < 和 > 的情况下对文本进行编码,那么它必须位于 CData 部分内。
<![CDATA[ Text that can include < and > without encoding ]]>
你得到<
或<
?
它们的末尾应该有一个分号才能成为有效实体。
如果您希望将其作为文本包含在内,则可以对其进行转义。每个 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)