试图解析这个XML,但我似乎无法弄清楚我哪里出错了。
XML片段:
<thexml timestamp="2017-01-02T10:17:41">
<event="41" date="2017-04-01" id="5543" time="09:30:00" type="seat" link="na"></event>
</thexml>
我正在尝试:
DOMTree = parseString(response.content)
collection = DOMTree.documentElement
selections = collection.getElementsByTagName("event")
for select in selections:
print "event found"
这似乎可以解决XML中的事件。例如,试图获得这种类型的方式让我感到难以理解。
tags = select.getElementsByTagName("type")
当我使用它时,标签的字符串变为暗示它找到它。但我不确定如何真正阅读孩子的字符串。我一直在尝试变化:
print type.childNodes[0].data
print type.childNodes.data
print type.data
我错过了一些非常明显的东西吗?我解析了一堆XML,但是这种格式让我有点沮丧。会欣赏正确方向的一点。
答案 0 :(得分:1)
您的xml中仍然存在问题。
以下是修复(以及如何提取相关属性):
In [17]: c = """<thexml timestamp="2017-01-02T10:17:41">
...: <event date="2017-04-01" id="5543" time="09:30:00" type="seat" link="na"></event>
...: </thexml>
...: """
In [18]: DOMTree = parseString(c)
In [19]: collection = DOMTree.documentElement
In [20]: s = collection.getElementsByTagName('event')
In [21]: for e in s:
...: print(e.getAttribute('type'))
...:
seat
请注意,在您的示例中,
type
是Attribute
(而不是Node
)因此您无法使用getElementsByTagName("type")
,您需要使用{ {1}}