首先是字符串
my $json = to_json({"Friends" => \@loop_data});
我要提取的是'<?xml version="1.0" encoding="UTF-8"?><metalink version="3.0" xmlns="http://www.metalinker.org/" xmlns:lcgdm="LCGDM:" generator="lcgdm-dav" pubdate="Fri, 11 Oct 2013 12:46:10 GMT"><files><file name="/lhcb/L"><size>173272912</size><resources><url type="https">https://test-kit.test.de:2880/pnfs/test.file</url><url type="https">https://test.grid.sara.nl:2882/pnfs/test.file</url></resources></file></files></metalink>'
文字。以下代码有效但有缺陷,因为它的硬编码:
url
所以这只适用于xml结构相同的情况。我尝试使用xpath,但我从来没有使用它或使用标签。我从来没有得到任何结果。
是xml字符串格式的问题还是我做错了?
答案 0 :(得分:3)
您可以使用xpath(以及findall
的{{1}}函数)来获取网址,但由于您已将Node
用于根元素,因此您需要使用xmlns="http://www.metalinker.org/"
1}}也在xmlns
。
示例 -
xpath
上面的xpath将找到xml中的所有url。
答案 1 :(得分:3)
您使用了名称空间,因此您需要在XPath中使用它们:
for entry in root.findall('.//{http://www.metalinker.org/}url'):
print entry.text