gpt4 book ai didi

node.js - NodeJS XPath.select 表达式

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

我在node.js应用程序中使用xpath,但我无法弄清楚witch是在我的dom中选择某些 Node 的正确表达式。

我已经安装了:https://www.npmjs.com/package/xpath

这是我的变量 xml

<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml"
xmlns:image="http://www.google.com/schemas/sitemap-image/1.1"
xmlns:video="http://www.google.com/schemas/sitemap-video/1.1">
<url>
<loc>https://generic.net/it/diventa-promoter</loc>
<xhtml:link
rel="alternate"
hreflang="en"
href="https://generic.net/en/become-promoter"
/>
<image:image>
<image:loc>https://generic.net/view/image/logo.jpg</image:loc>
<image:caption>Logo</image:caption>
</image:image>
<image:image>
<image:loc>https://generic.net/view/image/step_1.jpg</image:loc>
<image:caption>xxx</image:caption>
</image:image>
</url>
<url>
<loc>https://generic.net/it/accedi</loc>
</url>
<url>
<loc>https://generic.net/it/aggiungi-il-tuo-brand</loc>
<image:image>
<image:loc>https://generic.net/view/image/how_it_works_it.jpg</image:loc>
<image:caption>zzz?</image:caption>
</image:image>
</url>
<url>
<loc>https://generic.net/it/domande-frequenti-brand</loc>
</url>
<url>
<loc>https://generic.net/it/domande-frequenti-rivenditori</loc>
</url>
</urlset>

这是我的 js 代码

var doc = new dom().parseFromString(xml);
var nodes = xpath.select("//loc", doc);
console.log(nodes);

但是结果是--> [];

根据文档,此表达式“//loc”必须选择所有“loc” Node 。但不工作。我无法选择任何东西。但如果我选择全部(“//*”),则此操作有效。

最佳答案

您的整个 XML 文件位于命名空间中。第一行

<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" ...

为所有元素设置默认命名空间,从而为 loc 元素设置默认命名空间。因此,要么定义一个命名空间

var select = xpath.useNamespaces({"ns0": "http://www.sitemaps.org/schemas/sitemap/0.9"});

并在表达式//ns0:loc中使用它。
或者使用谓词表达式忽略 loc 元素上的所有命名空间

//*[local-name()='loc']

关于node.js - NodeJS XPath.select 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51044558/

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