繁体   English   中英

如何解析Python中的所有XML标签?

[英]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))

...将遍历每个元素,显示其属性和文本。 值得注意的是,此示例中的代码未对名称( elementkeyempty-element等)进行硬编码。

如果您关心上下文,请使用堆栈来记录您位于其中的元素(已经看到了start但未end的动作)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM