在python上使用元素树解析evernote xml:如何查找/删除具有特定标记名称的元素

时间:2014-04-28 01:43:08

标签: python xml-parsing tags elementtree evernote

我希望从xml上的evernote note中获取与en-todo元素相关的所有文本。是否有任何函数可以从根用一行获取具有特定名称的所有标记?

我尝试过root.findall(“en-todo”),但它返回nothings。

典型的evernote笔记可以包含具有不同嵌套级别的en-todo元素。 En-todo标签通常位于span标签内,尽管有时整个堆栈的文本和文本都可以在span标签内。它使解析变得相当复杂 有没有简单的方法从xml中删除所有span标签并保留其子节点?你能建议其他解决方案吗?

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE en-note SYSTEM
"http://xml.evernote.com/pub/enml2.dtd">
<en-note>
<div>
<en-todo></en-todo>
<span>one task</span>
</div>

<div><span><br clear="none"/></span></div>

<div><span>
<en-todo></en-todo>
<span>second task</span>
<br clear="none"/>
<span><en-todo></en-todo>third task</span>
<br clear="none"/>
<span><en-todo></en-todo>forth task</span>
<br clear="none"/>
<span><en-todo></en-todo>fifth task</span>
</span></div>
...

1 个答案:

答案 0 :(得分:0)

通过xpath获取:

root.findall('.//en-todo')

这将在任何嵌套级别找到所有en-todo个元素。