Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用lxml删除标题/尾随处理指令_Python_Lxml_Processing Instruction - Fatal编程技术网

Python 如何使用lxml删除标题/尾随处理指令

Python 如何使用lxml删除标题/尾随处理指令,python,lxml,processing-instruction,Python,Lxml,Processing Instruction,如何删除XML树中根元素的同级处理指令 我找不到任何函数来实现这一点,而经典的方法不起作用,因为头/尾处理指令没有父指令: 从lxml导入etree root=etree.XML(“”) tail=root.getnext() parent=tail.getparent()#parent为None 父。删除(尾部) 我得到: Traceback (most recent call last): File "/path/to/demo_remove_tail_pi.py", line 6,

如何删除XML树中根元素的同级处理指令

我找不到任何函数来实现这一点,而经典的方法不起作用,因为头/尾处理指令没有父指令:

从lxml导入etree
root=etree.XML(“”)
tail=root.getnext()
parent=tail.getparent()#parent为None
父。删除(尾部)
我得到:

Traceback (most recent call last):
  File "/path/to/demo_remove_tail_pi.py", line 6, in <module>
    parent.remove(tail)
AttributeError: 'NoneType' object has no attribute 'remove'
回溯(最近一次呼叫最后一次):
文件“/path/to/demo\u remove\u tail\u pi.py”,第6行,在
父。删除(尾部)
AttributeError:“非类型”对象没有属性“移除”

这是因为在根XML树之外生成了处理指令。这是多年前在LXML的网站上提出的,但不幸的是,它看起来并没有实现适当的修复

线程上的一个用户提供了一种(黑客)方法来删除以这种方式生成的处理指令。只需获取标记,将其附加到根元素,然后删除它

与其他一些XML库不同,lxml允许元素出现在一个地方。也就是说,不能将图元复制到其他位置;尝试将其移动到新位置,并将其从旧位置移除

从lxml.etree导入XML,tounicode
root=XML(“”)
打印(tounicode(root.getroottree()))
>>> 
tail=root.getnext()
root.append(尾部)
根。移除(尾部)
打印(tounicode(root.getroottree()))
>>> 
from lxml.etree import XML, tounicode

root = XML("<ROOT/><?foo?>")

print(tounicode(root.getroottree()))
>>> <ROOT/><?foo?>
tail = root.getnext()
root.append(tail)
root.remove(tail)
print(tounicode(root.getroottree()))
>>> <ROOT/>