[英]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_ELEMENT
和END_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.