【问题标题】:Python minidom extract text from XMLPython minidom 从 XML 中提取文本
【发布时间】:2017-09-06 07:12:29
【问题描述】:

这里是 Python 初学者。 我正在尝试使用 minidom 解析 XML 文件的结构。 XML结构是这样的:

...
    <Node Precode="1">
        <Text Id="9">sometext 1</Text>
    </Node>
...

我正在尝试使用递归函数(不是我自己的设计,在 stackoverflow 上找到并适应我的需要)将所有节点元素添加到列表中。目前的状态是这样的:

from xml.dom import minidom
list_to_write=[]
def parse_node(root):
    if root.childNodes:
        for node in root.childNodes:
            if node.nodeType == node.ELEMENT_NODE:
                new_node = [node.tagName,node.parentNode.tagName,node.getAttribute('Precode'),node.attributes.items()]

                list_to_write.append(new_node)

                parse_node(node)
    return list_to_write

如何提取“sometext”文本并将其作为元素添加到list_to_write 列表中?

【问题讨论】:

  • 提取“sometext”做什么?成为一个列表?
  • 作为list_to_write中的一个元素

标签: python xml minidom


【解决方案1】:

我假设你有一个nodes.xml:

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <Node >
        <Text Id="9">sometext 1</Text>
    </Node>
    <Node >
        <Text Id="9">sometext 2</Text>
    </Node>
    <Node >
        <Text Id="9">sometext 3</Text>
    </Node>
    <Node >
        <Text Id="9">sometext 4</Text>
    </Node>
    <Node >
        <Text Id="9">sometext 5</Text>
    </Node>
    <Node>
        <Text Id="9">sometext 6</Text>
    </Node>
    <Node >
        <Text Id="9">sometext 7</Text>
    </Node>
</root>

您可以使用下面的代码来获取文本:

from xml.dom import minidom

list_to_write=[]
def parse_node():
    doc = minidom.parse("nodes.xml")
    root = doc.documentElement

    nodes = root.getElementsByTagName("Node")
    print doc
    for node in nodes:
        list_to_write.append(node.getElementsByTagName("Text")[0].childNodes[0].nodeValue)

parse_node()

print (list_to_write)

结果是:

[u'sometext 1', u'sometext 2', u'sometext 3', u'sometext 4', u'sometext 5', u'sometext 6', u'sometext 7']

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多