我的问题是关于如何获取存储在标签中的信息,该信息不允许关闭标签。这是相关的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网址。如您所见,uws:result标记不需要结束标记。另外,使用'uws:'使得在python中工作时处理它们有点棘手。这是我到目前为止所尝试的内容:
from lxml import etree
root = etree.fromstring(xmlresponse.content)
url = root.find('{*}results').text
其中xmlresponse.content是要解析的xml数据。返回的是
'\n '
表示它只找到换行符,因为我真正追求的是包含在结果标记内的标记内。任何想法都将不胜感激。
答案 0 :(得分: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
语法来查找它。
您可以转储attrib字典,也可以复制属性名称。
text
实际上是元素之间的空间,并且通常不会被使用,但是对于间距(如etreeindent)和某些特殊情况都支持。