我正在使用MSXMl库来解析xml
在我调用put_text然后调用get_xml
之后输出将具有&lt; &安培; &GT;转换为<
&amp; >
我怎样摆脱这个?
答案 0 :(得分:4)
&LT;和&gt;禁止在文本中使用,需要编码为&amp; gt和&amp; lt。避免这种情况的唯一方法是为包含这些内容的文本创建CDATA部分。但是你真的不需要,如果你打算用MS XML读取XMLT - 它会解码这些符号就好了,你会得到你的&lt;和&gt;在提取的文本中完全没问题。
答案 1 :(得分:3)
您正在从纯文本转换为XML编码文本 这是我期望的行为。
如果您想要放入原始字符串,请尝试使用get_text()转换回文本。
如果您不希望put_text()对文本进行编码而不对&lt;和&gt;然后它必须在CData部分内。
<![CDATA[ Text that can include < and > without encoding ]]>
答案 2 :(得分:0)
您收到<
还是<
?
它们的末尾应该有一个分号作为有效实体。
答案 3 :(得分:0)
如果您希望将其作为文本包含在内,则将其转义为罚款。 每个xml pareser都会退回文本。
如果你想把它作为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)