簡體   English   中英

Python XML拉式解析器

[英]Python XML Pull Parser

我正在嘗試使用Python解析XML文件。 由於XML的大小,我想使用Pull Parser。 我找到了這個

我的代碼以

doc = pulldom.parse("myfile.xml")
for event, node in doc:
    # code here...

我在用

if (node.localName == "b"):

獲取XML標簽名稱,並且效果很好。

我找不到怎么做的是從標簽之間獲取文本。 使用node.nodeValue返回None

我可以使用node.toxml()來獲取該節點的完整XML,但是我只想要標記之間的文本。 除了使用正則表達式替換將標簽從node.toxml()取出之外, node.toxml()嗎?

對於每個帶有文本的標簽,您有兩個本地名稱為“ b”的節點START_ELEMENTEND_ELEMENT 通常,您應該收到以下內容:

START_ELEMENT
CHARACTERS
END_ELEMENT

因此,您要在匹配起始元素之后尋找字符。 您可能要嘗試這樣的事情:

from xml.dom.pulldom import CHARACTERS, START_ELEMENT, parse

doc = parse("myfile.xml")
text_expected = False
for event, node in doc:
    print event, node
    if text_expected:
        text_expected = False
        if event != CHARACTERS:
            # strange .. there should be some
            continue
        print node.data
    else:
        text_expected = (event == START_ELEMENT) and (node.localName == "b")

有了這個myfile.xml

<a>
    <b>c1</b>
    <b>c2</b>
</a>

我得到了輸出

c1
c2

請注意,您可能需要strip()每個字符串,並且必須忽略所有其他CHARACTERS -event。 兩個元素之間的每個換行和空格都會生成CHARACTERS事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM