小编men*_*die的帖子

使用Python lxml删除处理指令

我正在使用python lxml库将XML文件转换为新的模式,但是我在从XML主体解析处理指令时遇到了问题.

处理指令元素分散在整个XML中,如下例所示(它们都以"oasys"开头,以唯一代码结束):

string = "<text><?oasys _dc21-?>Text <i>contents</i></text>"
Run Code Online (Sandbox Code Playgroud)

我无法通过该lxml.etree.findall()方法找到它们,尽管etree.getchildren()它们返回:

tree = lxml.etree.fromstring(string)
print tree.findall(".//")
>>>> [<Element i at 0x747c>]
print tree.getchildren()
>>>> [<?oasys _dc21-?>, <Element i at 0x747x>]
print tree.getchildren()[0].tag
>>>> <built-in function ProcessingInstruction>
print tree.getchildren()[0].tail
>>>> Text 
Run Code Online (Sandbox Code Playgroud)

是否有替代使用getchildren()解析和删除处理指令,特别是考虑到它们嵌套在整个XML的各个级别?

python xml lxml

6
推荐指数
1
解决办法
715
查看次数

标签 统计

lxml ×1

python ×1

xml ×1