我在使用lxml时遇到了问题
我使用lxml解析一个xml文件,并再次将它写回一个新的xml文件。
输入文件:
<tag1>
<tag2 attr1="a1">" example text "</tag2>
<tag3>
<tag4 attr2="a2">" example text "</tag4>
<tag5>
<tag6 attr3="a3">' example text '</tag6>
</tag5>
</tag3>
</tag1>脚本:
from lxml import etree
parser = etree.XMLParser(remove_comments=False,strip_cdata=False,resolve_entities=False)
tree = etree.parse("input.xml")
tree.write("out.xml")输出:
<tag1>
<tag2 attr1="a1"> " example text " </tag2>
<tag3>
<tag4 attr2="a2"> " example text " </tag4>
<tag5>
<tag6 attr3="a3"> ' example text ' </tag6>
</tag5>
</tag3>
</tag1>我想保留"和'。我甚至试着用
f = open('output.xml', 'w')
f.write(etree.tostring(tree1.getroot(),encoding="UTF-8",xml_declaration=False))
f.close()但他们都没有解决这个问题。
然后,我尝试用手工替换“"”。
root = tree.getroot()
tag_elements = root.iter()
for tag in tag_elements:
tag_text = tag.text
if tag_text is not None:
tag_text1 = tag_text.replace("\"",""")
tag.text = tag_text1但是这给出了下面的输出
<tag1>
<tag2 attr1="a1"> &quot; example text &quot; </tag2>
<tag3>
<tag4 attr2="a2"> &quot; example text &quot; </tag4>
<tag5>
<tag6 attr3="a3"> ' example text ' </tag6>
</tag5>
</tag3>
</tag1>它用&代替&。我在这里很困惑。请帮我解决这个问题。
发布于 2015-04-28 20:24:12
&是字符&的xml编码。"是字符"的xml编码。不需要对字符"和'进行编码,因此lxml不对它们进行编码。
你又试着解码文件了吗?它应该能像你期望的那样起作用。如果您需要再次对文档中的字符串进行编码(将&转换为&等),那么在生成新的xml文档之前,使用lxml树中的各个字符串进行编码。
https://stackoverflow.com/questions/29922680
复制相似问题