gpt4 book ai didi

c - 在 libxml 中选择使用 xPath 验证条件的第一个元素

转载 作者:太空宇宙 更新时间:2023-11-04 00:06:43 25 4
gpt4 key购买 nike

在 libxml 中,我尝试选择第一个元素以使用 xpath 验证条件。如果我理解正确,xpath 中的 "//div[contains(@id,'art')][1]"只会给出一个元素,尽管我得到了不止一个元素。我在 libxml 教程中使用函数 getnodeset(参见 here)。这是代码:

xmlXPathObjectPtr result=getnodeset(def,(xmlChar*) "//div[contains(@id,'art')][1]"); // where def is a htmlDocPtr
xmlNodeSetPtr nodeset;
if(result)
{
nodeset=result->nodesetval;

if(nodeset->nodeNr>1)
fprintf(stderr,"%i first div with id attribute *art* : %s\n",nodeset->nodeNr,nomDef);
}

最佳答案

代替

"//div[contains(@id,'art')][1]"

你想要

"(//div[contains(@id,'art')])[1]"

原因与绑定(bind)优先级有关。您可能知道,[1][position() = 1] 的简写。在您尝试使用的变体中,这意味着“当当前节点( div 元素)是其父节点的第一个子节点时”。显然,可能有许多这样的 div,每个都是其各自父项的第一个子项。

当您在表达式 //div[predicate] 周围加上括号并向其附加 [1] 时,您就是在问您想要问的问题: //div[predicate] 选择的节点集中的第一个节点是什么?

关于c - 在 libxml 中选择使用 xPath 验证条件的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21093961/

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