XML文件示例最有效的方法,從這個XML文件中提取數據
<GateDocument>
<GateDocumentFeatures>
...
</GateDocumentFeatures>
<TextWithNodes>
<Node id="0"/>
MESSAGE SET
<Node id="19"/>
<Node id="20"/>
1. 1/1/09 - sample text 1
<Node id="212"/>
sample text 2
<Node id="223"/>
sample text 3
...
<Node id="160652"/>
</TextWithNodes>
<AnnotationSet></AnnotationSet>
<AnnotationSet Name="SomeName">
...
</AnnotationSet>
</GateDocument>
只是爲了開始,這是第一個我編碼在Python和XML處理,很抱歉,如果我錯過真的很明顯事情!
我的目標是提取特定節點標識處的示例文本。
第一次嘗試 - 我用minidom,它沒有給我提取正確的方法(http://stackoverflow.com/questions/11122736/extracting-text-from-xml-node-with-minidom )由於自閉標籤中節點ID的奇怪格式。
第二次嘗試 - 我看着LXML拿起建議,我已經成功地提取該文本是這樣的:
['\n\t\t','n\t\tMESSAGE SET\n\t\t','\n\t\t','\n\t\t1. 1/1/09 - sample text 1,....,'\n\t']
隨着一些清理,我想我可以得到文本正常,但是,我失去了關聯的節點ID值。
與代碼:
from lxml import etree
from StringIO import StringIO
xmlfile = ('C:\...AnnotationsXML.xml')
xmldoc = etree.parse(xmlfile)
print xmldoc.xpath("//TextWithNodes/text()")
所以,我想我的問題是:
- 有沒有一種方法來提取上述無\ n \ t \ t?我讀到這是空間格式化(即標籤),但我不確定
<Node id = 0>
去了哪裏。 - 是否有更好或更有效的方法提取此文件?
謝謝!
要麼在你的路徑中使用正斜槓,要麼在窗口上使用原始字符串(r'...'),否則你會發現某些路徑中突然出現換行符和製表符。 – Daenyth
'Node'元素和散佈在這些元素之間的文本之間的連接是什麼?這種XML格式看起來非常糟糕。 –
@FrancisAvila我相信文本分析軟件(GATE)允許註釋文本。因此,我可以挑出一個單詞/短語並用特徵對其進行註釋。我認爲節點ID是整個文檔的起始索引,如果整個文檔是字符串的話。 (如果我正確地描述它) – Jasmine