Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/257.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在PHP中使用Xpath解析XML_Php_Xml_Parsing_Xpath - Fatal编程技术网

在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的局限性?