我目前正在处理解析XML文档(添加元素,添加属性等)。所以我首先需要在处理它之前解析XML。但是,lxml
似乎正在移除元素<?xml ...>
。例如
from lxml import etree
tree = etree.fromstring('<?xml version="1.0" encoding="utf-8"?><dmodule>test</dmodule>', etree.XMLParser())
print etree.tostring(tree)
将导致
<dmodule>test</dmodule>
有谁知道为什么要移除<?xml ...>
元素?我认为编码标签是有效的XML。谢谢你的时间。
答案 0 :(得分:6)
<?xml>
元素是一个XML声明,因此它不是严格意义上的元素。它只是提供了有关它下面的XML树的信息。
如果你需要用lxml打印出来,这里有一些关于你可以使用的xmlDeclaration=TRUE
标志的信息。
http://lxml.de/api.html#serialisation
etree.tostring(tree, xml_declaration=True)
答案 1 :(得分:0)
有谁知道为什么要移除
<?xml ...>
元素?
XML默认为UTF-8版本1.0,因此如果删除文档,则文档是等效的。
您正在将一些XML解析为数据结构,然后将该数据结构转换回XML。您将在XML中获得该数据结构的表示,但可能不会以相同的方式表示(因此可以删除prolog,并且<foo />
可以与<foo></foo>
交换等等。 / p>