【问题标题】:Getting text values from XML in Python在 Python 中从 XML 获取文本值
【发布时间】:2009-09-16 16:02:07
【问题描述】:
from xml.dom.minidom import parseString
dom = parseString(data)
data = dom.getElementsByTagName('data')

“数据”变量作为元素对象返回,但我一生都无法在文档中看到获取元素的文本值。

例如:

<something><data>I WANT THIS</data></something>

有人有什么想法吗?

【问题讨论】:

    标签: python xml parsing


    【解决方案1】:

    所以看待它的方式是“I WANT THIS”实际上是另一个节点。它是“数据”的文本子代。

    from xml.dom.minidom import parseString
    dom = parseString(data)
    nodes = dom.getElementsByTagName('data')
    

    此时,“nodes”是一个 NodeList,在您的示例中,它有一个项目,即“data”元素。相应地,“data”元素也只有一个子节点,即文本节点“I WANT THIS”。

    所以你可以这样做:

    print nodes[0].firstChild.nodeValue
    

    请注意,如果输入中有多个名为“数据”的标签,则应在“节点”上使用某种迭代技术,而不是直接对其进行索引。

    【讨论】:

      【解决方案2】:

      这应该可以解决问题:

      dom = parseString('<something><data>I WANT THIS</data></something>')
      data = dom.getElementsByTagName('data')[0].childNodes[0].data
      

      即您需要深入了解 DOM 结构以获取文本子节点,然后访问其值。

      【讨论】:

      • 请注意,在空字符串的情况下,将没有子文本节点,因此 childNodes[0] 将失败。
      • 要正确收集文本数据,必须遍历 childNode 并连接 node.nodeType 为 TEXT_NODE 或 CDATA_SECTION_NODE 的所有节点的数据。 ElementTree 界面更简单。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多