Получить документ из объектов Node или Element с помощью minidom
Есть ли способ получить корневой документ от дочернего элемента или узла? Я перехожу из библиотеки, которая работает с любым из документов, элементов или узлов, в библиотеку, которая работает только с документом. например.
От:
element.xpath('/a/b/c') # 4Suite
чтобы:
xpath.find('/a/b/c', doc) # pydomxpath
1 ответ
Решение
Node
объекты имеют ownerDocument
свойство, которое относится к Document
объект, связанный с узлом. См. http://www.w3.org/TR/DOM-Level-2-Core/core.html.
Это свойство не упоминается в документации по Python, но оно доступно. Пример:
from xml.dom import minidom
XML = """
<root>
<x>abc</x>
<y>123</y>
</root>"""
dom = minidom.parseString(XML)
x = dom.getElementsByTagName('x')[0]
print x
print x.ownerDocument
Выход:
<DOM Element: x at 0xc57cd8>
<xml.dom.minidom.Document instance at 0x00C1CC60>