gpt4 book ai didi

ruby - 遍历每个 xml 节点

转载 作者:太空宇宙 更新时间:2023-11-03 17:23:16 25 4
gpt4 key购买 nike

我希望这不是一个重复的问题。我花了很多时间四处寻找可行的解决方案,但我没有运气。我想要做的是遍历每个 xml 节点并获取特定节点。为此,我使用了 Ruby、Nikogiri 和 xpath。

所以我有一个简单的 xml 文件,看起来像这样的 sitemap.xml:

<?xml version="1.0" encoding="UTF-8"?>
<url>
<loc>http://www.stackoverflow.com/questions/ask1/</loc>
</url>
<url>
<loc>http://www.stackoverflow.com/questions/ask2/</loc>
</url>
<url>
<loc>http://www.stackoverflow.com/questions/ask3/</loc>
</url>

所以我试图提取每个 .这是我的代码:

siteMap = 'sitemap.xml'
sm = File.open(siteMap)
docSM = Nokogiri::XML(sm)

siteMapLinks = docSM.xpath("/url/loc").inner_text
print siteMapLinks.to_s + "\n"

输出>

http://www.stackoverflow.com/questions/ask1/

如您所见,它不会输出所有节点/标签。我试过将代码放在 for 循环中,但它所做的只是重复同一个节点。知道如何获得我想要的输出:

期望的输出>

http://www.stackoverflow.com/questions/ask1/
http://www.stackoverflow.com/questions/ask2/
http://www.stackoverflow.com/questions/ask3/

最佳答案

这很接近,但遗漏了一些细节。 Nokogiri 解析您的 XML 直到第一个顶级标签关闭,因此如果您希望它解析所有 URL,您将需要一些封装标签,如

<?xml version="1.0" encoding="UTF-8"?>
<urls>
<url>
<loc>http://www.stackoverflow.com/questions/ask1/</loc>
</url>
<url>
<loc>http://www.stackoverflow.com/questions/ask2/</loc>
</url>
<url>
<loc>http://www.stackoverflow.com/questions/ask3/</loc>
</url>
</urls>

现在你可以查询你的文档了

docSM.xpath("//url/loc").each do |node|
puts node.inner_text
end

如果你这样做

docSM.xpath("//url/loc").inner_text

正如您所建议的那样,您将得到一个字符串,所有文本都连接在一起,中间没有分隔符。

关于ruby - 遍历每个 xml 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24363268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com