flx*_*kid 5 python xml elementtree
我正在尝试使用python中的ElementTree对象结构创建XML.除了处理指令外,一切都很好.我可以使用工厂函数ProcessingInstruction()轻松创建PI,但不会将其添加到elementtree中.我可以手动添加它,但我无法弄清楚如何将它添加到通常放置PI的根元素之上.有人知道怎么做吗?我知道有很多替代方法可以做到这一点,但似乎这必须建立在我找不到的地方.
使用lxml API它可能不容易,虽然它有点"未记录":
如果您需要顶级处理指令,请按以下方式创建:
from lxml import etree
root = etree.Element("anytagname")
root.addprevious(etree.ProcessingInstruction("anypi", "anypicontent"))
Run Code Online (Sandbox Code Playgroud)
生成的文档如下所示:
<?anypi anypicontent?>
<anytagname />
Run Code Online (Sandbox Code Playgroud)
他们当然应该将这个添加到他们的常见问题解答中,因为IMO是另一个将这个优秀的API分开的功能.
小智 5
尝试使用lxml库:它遵循ElementTree api,并添加了许多额外的功能.从兼容性概述:
在解析XML时,ElementTree会忽略注释和处理指令,而etree会将它们读入并分别将它们视为Comment或ProcessingInstruction元素.在文本内容中找到注释的位置尤其明显,然后由Comment元素拆分.
您可以通过将boolean
remove_comments和/或remove_piskeyword参数传递给您使用的解析器来禁用此行为.为方便起见并支持可移植代码,您也可以使用etree.ETCompatXMLParser而不是默认代码etree.XMLParser.它尝试提供尽可能接近ElementTree解析器的默认设置.
我知道,不是在stdlib中,但根据我的经验,当您需要标准ElementTree不提供的东西时,最好的选择.
| 归档时间: |
|
| 查看次数: |
3757 次 |
| 最近记录: |