抱歉,如果標題不說清楚,我正在解析有大量的嵌套的標籤的XML文件,例如有云:Python的XML解析 - 如果元素==「值」做X
<Artifacts>
<Artifact name="1">
<Fragments>
<hits>
<hit sequence="1">
<Fragment name="1">Data</Fragment>
<Fragment name="2">Data</Fragment>
</hit>
</hits>
</Fragments>
</Artifact>
<Artifact name="2">
(讓版面更清晰抱歉) 等等。我目前所受的痛苦就是隻能得到我們需要的數據。從上面的示例中,我們需要Artifact name = 1下的所有內容,並將Data的片段名稱「1」拉出。目標結果如下:
工件=「1」,片段名稱=「1」,片段數據=「數據」。
目前我似乎無法理解它,我已經完成類似於PHP沒有問題,但這需要在Python中完成。
所以有點抱歉抱歉,但沒有人有任何想法如何指定只抓取來自名爲1,3,5的工件的數據,例如忽略其他所有內容?我所能做的就是從文件中的所有內容中抓取它(這會降低速度,然後需要進一步處理)
謝謝。
你聽說過的XPath?安裝[lxml](http://lxml.de/xpathxslt.html#the-xpath-method]並搜索匹配'「/ Artifacts/Artifact [@name ='1'或@name ='3'或@name的元素='5']「',例如, –
@LaurentLAPORTE或'[@name =('1','3','5')]';在XPath中,'='實際上是查找集合交集 –
@Charles Duffy:哪個版本的XPath?我從來沒有聽說過,它一定是最近的變化,但'lxml'不喜歡它:'tree.xpath(「/ Artifacts/Artifact [@name =('1 ','3','5')]「)'raise'lxml.etree.XPathEvalError:Invalid expression'。 –