[英]How to parse all the XML tags in Python?
我想完全解析XML文件并提取所有标记的值。 我有用于提取我提到的标签的值的代码。 但是我想提取所有标签的所有值。 手动提及所有标签并提取是不可能的吗? 这就是为什么我需要知道一种方法。 请帮我。
提前致谢。!!
密码:
from xml.dom import minidom
document = minidom.parse("forms.xml")
def findChildNodeByName(parent, name):
for node in parent.childNodes:
if node.nodeType == node.ELEMENT_NODE and node.localName == name:
return node
return None
def getText(nodelist):
rc = []
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
rc.append(node.data)
return ''.join(rc)
titles =[]
servers = document.getElementsByTagName('servers')
for server in servers:
item1 = server.getElementsByTagName("server")
print item1
for item2 in item1:
value = item2.getElementsByTagName("host") [0].childNodes[0].data
print value
titles.append(value)
print titles
XML文件:
<servers>
<server>
<host> HOST1 </host>
<port> 6667 </port>
<channel>
<name> CHANNAME1</name>
</channel>
<channel>
<name> CHANNAME2 </name>
</channel>
</server>
<server>
<host> HOST2 </host>
<port> 6667 </port>
<channel>
<name> CHANNAME3 </name>
</channel>
输出:
HOST1
HOST2
听起来lxml.etree.iterparse()
是您的朋友。
要(大致)引用文档中的内容(任何我自己添加的错误):
from lxml import etree
from StringIO import StringIO
xml = '''
<root>
<element key='value'>text</element>
<element>text</element>tail
<empty-element xmlns="http://testns/" />
</root>
'''
context = etree.iterparse(StringIO(xml))
for action, elem in context:
print("%s: %s (attribs: %r; text: %r)"
% (action, elem.tag, elem.attrib, elem.text))
...将遍历每个元素,显示其属性和文本。 值得注意的是,此示例中的代码未对名称( element
, key
, empty-element
等)进行硬编码。
如果您关心上下文,请使用堆栈来记录您位于其中的元素(已经看到了start
但未end
的动作)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.