2017-01-23 77 views
-1

我有這個例子的XML文件:的Python:除了在某些標籤提取XML文本

<page> 
    <title>Chapter 1</title> 
    <content>Welcome to Chapter 1</content> 
    <author>John Smith</author> 
</page> 
<page> 
<title>Chapter 2</title> 
<content>Welcome to Chapter 2</content> 
<author>John Doe</author> 
</page> 

此XML可以具有多個級別(即大於2),並且可以具有其他標記。我想提取所有文字,除了那些在標籤「內容」,讓我得到一個字符串列表如下:

['Chapter 1', 'John Smith', 'Chapter 2', 'John Doe'] 

我執行使用ElementTree的這個任務。有沒有優雅,乾淨的解決方案?

+1

_ 「我使用ElementTree的執行這一任務」 _ - 可能是一個良好的開端。 _「是否有任何優雅,乾淨的解決方案」 - 很可能,但我們不會爲您編寫解決方案。顯示你迄今爲止做了什麼。訪問[幫助]並閱讀[問]以瞭解如何有效地使用本網站。 –

+0

我現在正在使用xpath,即類似於xpath('*/text()')的東西。但是,我想要黑名單之類的東西來過濾不需要的標籤下的文本。你有什麼建議嗎? –

回答

-1
import bs4 

xml = '''<page> 
    <title>Chapter 1</title> 
    <content>Welcome to Chapter 1</content> 
    <author>John Smith</author> 
</page> 
<page> 
<title>Chapter 2</title> 
<content>Welcome to Chapter 2</content> 
<author>John Doe</author> 
</page>''' 

soup = bs4.BeautifulSoup(xml, 'lxml') 
[(page.title.text, page.author.text)for page in soup('page')] 

出來:

[('Chapter 1', 'John Smith'), ('Chapter 2', 'John Doe')] 

使用BeautifulSoup作爲XML解析器,你可以參考Document

相關問題