PHP SimpleXML XPath 获取下一个父节点
我以前从未在这里问过问题,所以如果我的问题格式不好或不够具体,请原谅我的问题。我只是一个浅尝辄止的人,对 PHP 和 XPath 知之甚少。
我有一个像这样的 XML 文件:
<catalogue>
<item>
<reference>A1</reference>
<title>My title1</title>
</item>
<item>
<reference>A2</reference>
<title>My title2</title>
</item>
</catalogue>
我使用 SimpleXML 提取该文件:
$file = "products.xml";
$xml = simplexml_load_file($file) or die ("Unable to load XML file!");
然后我使用 URL 参数中的引用来使用 PHP 获取有关“项目”的额外详细信息:
foreach ($xml->item as $item) {
if ($item->reference == $_GET['reference']) {
echo '<p>' . $item->title . '</p>';
}
所以从像 www.mysite.com/file 这样的 URL .php?reference=A1
我会得到这个 HTML:
<p>My title1</p>
我意识到我可能做得不对,欢迎任何改进这一点的指示。
我的问题是,我想找到下一个和上一个“项目”的详细信息。如果我从 URL 知道引用=A1,我如何找到下一个“项目”的引用、标题等?如果我只有“A1”并且我知道这是一个引用节点,我如何获得这样的 HTML:
<p>Next item is My title2</p>
我已经阅读了有关 follow-sibling 的内容,但我不知道如何使用它。我只能找到参考节点的以下兄弟节点,这不是我需要的。
任何帮助表示赞赏。
I've never asked a question here before so please forgive my question if its formatted badly or not specific enough. I am just a dabbler and know very little about PHP and XPath.
I have an XML file like this:
<catalogue>
<item>
<reference>A1</reference>
<title>My title1</title>
</item>
<item>
<reference>A2</reference>
<title>My title2</title>
</item>
</catalogue>
I am pulling this file using SimpleXML:
$file = "products.xml";
$xml = simplexml_load_file($file) or die ("Unable to load XML file!");
Then I am using the reference from a URL parameter to get extra details about the 'item' using PHP:
foreach ($xml->item as $item) {
if ($item->reference == $_GET['reference']) {
echo '<p>' . $item->title . '</p>';
}
So from a URL like www.mysite.com/file.php?reference=A1
I would get this HTML:
<p>My title1</p>
I realise I might not be doing this right and any pointers to improving this are welcome.
My question is, I want to find the next and previous 'item' details. If I know from the URL that reference=A1, how do I find the reference, title etc of the next 'item'? If I only have 'A1' and I know that's a reference node, how do I get HTML like this:
<p>Next item is My title2</p>
I have read about following-sibling but I don't know how to use it. I can only find the following-sibling of the reference node, which isn't what I need.
Any help appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您可以使用:
含义:来自
catalogue
根元素的item
元素子元素,具有带有“A1”字符串值的reference
元素,导航到第一个同级item
元素的title
子元素。You could use:
Meaning: from an
item
element child ofcatalogue
root element, having areference
element with 'A1' string value, navegate to first following siblingitem
element'stitle
child.我可能会使用 xpath 来获取下一个/上一个(和当前)节点。
请参阅
SimpleXMLElement::xpath
的文档XPath 语法 文档。I´d probably use xpath to fetch the next/previous (and current) node.
See the documentation of
SimpleXMLElement::xpath
and XPath syntax documentation.