使用lxml和xpath解析xml文件时如何保持

2024-05-14 01:27:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从输入xml文件中提取一些信息,并使用lxml和xpath指令将其打印到输出文件中。 我在读取如下xml标记时遇到了一个问题

...
<editor> Barnes &amp; Nobel </editor>
...

为了解析xml文件并打印我使用的编辑器内容(xml中始终只有一个编辑器):

^{pr2}$

我的问题是&amp;在某个时候被转换成{},这会扰乱我的进一步处理。在

如何确保&amp;符号不会被“解码”?在


Tags: 文件标记信息内容指令符号xml编辑器
2条回答

我终于在How do I escape ampersands in XML so they are rendered as entities in HTML?的答案中找到了自己问题的答案 在我的代码中,我添加了一个中间步骤,以确保所有&;字符在输出时保持不变。这是

parser = etree.XMLParser(encoding='utf-8')
xmlText = open(inputXML, "r").read().replace("&amp;", "&amp;amp;")
docTree = etree.parse( io.BytesIO(xmlText), parser )
print docTree.xpath('//editor')[0].text

事实上,为了以防万一,我已经将同样的方法应用到http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Predefined%5Fentities%5Fin%5FXML中定义的XML中的其他可能的实体

我知道这听起来有点自以为是,但您希望数据是"&"。这是XML元素的文本内容。如果您以后的处理需要它作为"&amp;",那么您需要一个步骤,将它XML-(或HTML-)编码回"&amp;"

不能要求XML解析器解析文档而不将"&amp;"转换为{}。它做不到。在

相关问题 更多 >