gpt4 book ai didi

php - Xpath问题,获取元素的id(attribute),如果你知道元素的标题

转载 作者:行者123 更新时间:2023-12-04 06:37:18 25 4
gpt4 key购买 nike

这是我的XML文件,我想知道当你知道时如何获取文章的ID
标题是什么。这可以使用 Xpath 吗?

XML文件:

<Articles>
<Article ID="1">
<title>test</title>
<content>test</content>
</Article>
</Articles>

代码:
$dom = new DOMDocument;
$dom->load("Articles.xml");
$xp = new DOMXPath($dom);
$id = $xp->evaluate('string(/Articles/Article[title="test"]/@ID)');
var_dump($id);

亲切的问候,

用户。

最佳答案

只要您使用的是 SimpleXml,就不能直接返回 ID。正确的 XPath 是

/Articles/Article[title="crack"]/@ID

如其他地方所示。但是 SimpleXml 没有 Attribute 节点的概念。它只知道 SimpleXmlElements。因此,您也可以改为获取 Article 节点
/Articles/Article[title="crack"]

因为最终您必须执行以下操作才能获取 ID 值:
echo $articles[0]['id'];

请注意,从 SimpleXml 元素访问属性时不需要 @。

如果您想直接获取 ID 属性,则必须使用 DOM ( codepad )
$dom = new DOMDocument;
$dom->loadXml($xml);
$xp = new DOMXPath($dom);
$id = $xp->evaluate('string(/Articles/Article[title="crack"]/@ID)');
var_dump($id);

只要没有其他节点的 title 元素的值等于“crack”,上述内容就会返回 1。

如果您有带格式的节点, like shown in your screenshot ,您必须在测试值之前对元素进行 sanitizer 。否则,将考虑用于格式化文档的空白。 XPath 将是
string(/Articles/Article[normalize-space(title) = "crack"]/@ID)

如果要搜索标题部分包含“破解”的文章,请使用
string(/Articles/Article[contains(title, "crack")]/@ID)

请注意,只要只有一个结果,这仍然只会立即返回 ID。如果有多个匹配的节点,则返回第一个 ID 值。用
/Articles/Article[contains(title, "crack")]/@ID

返回所有匹配节点的 DOMNodeList,然后遍历它们以获取它们各自的 ID 值。

另见 basic usage examples for SimpleXml in the PHP Manual

关于php - Xpath问题,获取元素的id(attribute),如果你知道元素的标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4708304/

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