2016-09-28 5 views
0

Имеет ли lxml или exml функцию для экспорта всех xpaths в XML?Dump All XPaths

XML Пример:

<note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body> 
     <content>Don't forget me this weekend!</content> 
    </body> 
    </note> 

XPath Результаты:

\\note 
\\note\to 
\\note\from 
\\note\heading 
\\note\body 
\\note\body\content 

ответ

1

Вы должны перебрать дерева и вызвать getpath на каждом узле:

x = """<note> 
    <to>Tove</to> 
    <from>Jani</from> 
    <heading>Reminder</heading> 
    <body> 
     <content>Don't forget me this weekend!</content> 
    </body> 
    </note>""" 

from lxml import etree 
from StringIO import StringIO 
tree = etree.parse(StringIO(x)) 

paths = "\n".join(tree.getpath(n) for n in tree.iter()) 
print(paths) 

Выход:

/note 
/note/to 
/note/from 
/note/heading 
/note/body 
/note/body/content