在PHP中使用Xpath解析XML
考虑以下代码:在PHP中使用Xpath解析XML,php,xml,parsing,xpath,Php,Xml,Parsing,Xpath,考虑以下代码: $dom = new DOMDocument(); $dom->loadXML($file); $xmlPath = new DOMXPath($dom); $arrNodes = $xmlPath->query('*/item'); foreach($arrNodes as $item){ //missing code } $file是一个xml文件,每个项目都有一个标题和一个描述。 如何显示它们(标题和说明) $file=” 考试题目 测验 "; 我建议使用p
$dom = new DOMDocument();
$dom->loadXML($file);
$xmlPath = new DOMXPath($dom);
$arrNodes = $xmlPath->query('*/item');
foreach($arrNodes as $item){
//missing code
}
$file是一个xml文件,每个项目都有一个标题和一个描述。
如何显示它们(标题和说明)
$file=”
考试题目
测验
";
我建议使用php的simplexml
,这样,您仍然可以获得xpath
功能,但使用更简单的方法,例如,您可以访问如下属性:
$name = $item['name'];
<item>
<title>foo</title>
<description>frob</description>
</item>
<item title="foo" description="frob" />
下面是一个例子:
xmlfile.xml:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<items>
<item title="Hello World" description="Hellowing the world.." />
<item title="Hello People" description="greeting people.." />
</items>
</xml>
do.php:
<?php
$xml_str = file_get_contents('xmlfile.xml');
$xml = new SimpleXMLElement($xml_str);
$items = $xml->xpath('*/item');
foreach($items as $item) {
echo $item['title'], ': ', $item['description'], "\n";
}
我建议使用php的simplexml
,这样,您仍然可以获得xpath
功能,但使用更简单的方法,例如,您可以访问如下属性:
$name = $item['name'];
<item>
<title>foo</title>
<description>frob</description>
</item>
<item title="foo" description="frob" />
下面是一个例子:
xmlfile.xml:
<?xml version="1.0" encoding="UTF-8"?>
<xml>
<items>
<item title="Hello World" description="Hellowing the world.." />
<item title="Hello People" description="greeting people.." />
</items>
</xml>
do.php:
<?php
$xml_str = file_get_contents('xmlfile.xml');
$xml = new SimpleXMLElement($xml_str);
$items = $xml->xpath('*/item');
foreach($items as $item) {
echo $item['title'], ': ', $item['description'], "\n";
}
如果您的物品看起来像这样:
$name = $item['name'];
<item>
<title>foo</title>
<description>frob</description>
</item>
<item title="foo" description="frob" />
title
和description
是属性吗?例如。项目是否如下所示:
$name = $item['name'];
<item>
<title>foo</title>
<description>frob</description>
</item>
<item title="foo" description="frob" />
如果您的物品如下所示:
$name = $item['name'];
<item>
<title>foo</title>
<description>frob</description>
</item>
<item title="foo" description="frob" />
title
和description
是属性吗?例如。项目是否如下所示:
$name = $item['name'];
<item>
<title>foo</title>
<description>frob</description>
</item>
<item title="foo" description="frob" />
正确的XPath表达式应为:
/*/item/title | /*/item/desc
或
这是对文档顺序中包含title
和desc
元素的节点集求值正确的XPath表达式应该是:
/*/item/title | /*/item/desc
或
这是对文档顺序中包含title
和desc
元素的节点集进行求值Ok,但xpath是否受到限制?@daniphp,您的意思是什么,您是在询问xpath查询功能的总体情况还是simplexml的限制?Ok,但xpath是否受到限制?@daniphp,您的意思是什么,您是在询问xpath查询功能的一般情况还是simplexml的局限性?