2

我的问题是关于如何获取存储在不允许结束标签的标签中的信息。这是相关的xml:

<?xml version="1.0" encoding="UTF-8"?>
<uws:job>  
<uws:results>
    <uws:result id="2014-03-03T15:42:31:1337" xlink:href="http://www.cosmosim.org/query/index/stream/table/2014-03-03T15%3A42%3A31%3A1337/format/csv" xlink:type="simple"/>
</uws:results>
</uws:job>

我希望在这里提取 xlink:href url。如您所见,uws:result 标签不需要结束标签。此外,在 python 中工作时,拥有 'uws:' 使得处理它们有点棘手。这是我到目前为止所尝试的:

from lxml import etree
root = etree.fromstring(xmlresponse.content)
url = root.find('{*}results').text

其中 xmlresponse.content 是要解析的 xml 数据。这返回的是

'\n    '

这表明它只找到换行符,因为我真正想要的内容包含在结果标签内的标签中。任何想法将不胜感激。

4

1 回答 1

1

您找到了正确的节点;您错误地提取了数据。代替

url = root.find('{*}results').text

你真的想要

url = root.find('{*}results').get('attribname', 'value_to_return_if_not_present')

或者

url = root.find('{*}results').attrib['attribname']

(如果不存在将引发异常)。

由于属性本身的名称空间,您可能还需要使用{ns}attrib语法来查找它。

您可以转储属性字典,也可以复制属性名称。

text实际上是元素之间的空间,通常不使用,但支持间距(如 etreeindent)和一些特殊情况。

于 2014-03-03T19:28:04.640 回答