【问题标题】:Etree returns a "random" string instead of attribute nameEtree 返回一个“随机”字符串而不是属性名称
【发布时间】:2016-10-07 14:09:56
【问题描述】:

我对python和trees完全陌生,遇到了一些问题。

我的数据集结构如下:

<?xml version="1.0" encoding="UTF-8"?>
<graphml xmlns="http://graphml.graphdrawing.org/xmlns">
  <node id="someNode">
    <data key="label">someNode</data>
  </node>
</graphml>

我想同时获取根元素和节点元素的属性和属性值。

我尝试过像这样使用 Python xml.etree.ElementTree:

import xml.etree.ElementTree as etree

tree = etree.parse('myDataset')
root = tree.getroot()

print('Root: ', root)

print('Children: ', root.getchildren())

但这就是我得到的:

Root:  <Element '{http://graphml.graphdrawing.org/xmlns}graphml' at 0x031DB5A0>
Children:  [<Element '{http://graphml.graphdrawing.org/xmlns}key' at 0x03F9BFC0>

我也尝试过 .text 和 .tag,它只删除了“at 0x03...”。

希望问题是可以理解的,并且有人知道解决方案。

【问题讨论】:

  • 它不是“随机字符串”,它是一个object
  • 我不明白应该是什么问题,这里一切正常。

标签: python xml tree elementtree graphml


【解决方案1】:

如果要将根节点和子节点输出为 xml 文本,而不是默认表示,请使用 xml.etree.ElementTree.tostring(root)

for child in root:
    xml.etree.ElementTree.tostring(child)

官方文档:https://docs.python.org/2/library/xml.etree.elementtree.html#xml.etree.ElementTree.tostring

如果您想要他的标签名称,请使用每个元素的tag 属性:

print(root.tag)
for child in root:
    print(child.tag)

描述可用属性的文档:https://docs.python.org/2/library/xml.etree.elementtree.html#xml.etree.ElementTree.Element

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-25
    • 2011-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多