DOMXPath 中的查询错误

Query errors in DOMXPath

我正在尝试使用 PHP 中的 DOMXPath class 解析 xml 文件,但在查询时出现一些错误。我的 XML 有这样的东西

XML

<?xml version="1.0" encoding="UTF-8"?>
<news><new><title><!CDATA[bla bla bla]]></title><content><!CDATA[<p>bla bla bla</p>]]></content></new></news>

DOMXPath

$xml = new DOMDocument();
$xml->load( $filename );
$xpath = new DOMXPath( $xml );

$news = $xpath->query('//news');

$news 长度始终为 0,news 标签存在于 xml 文件中。

我做错了什么?

此致,

伊斯梅尔。

请注意,您正在查询根标签 ("news"),这有点无用,因为每个 XML 文件只有一个根标签。其实你查询的和query('/news')一样,长度永远是“1”。

对于您的问题,请注意您的 CDATA 格式不正确。它是 <![CDATA[blah blah blah]]>,而不是 <!CDATA[bla bla bla]]CDATA 之前缺少括号)。

这个有效

<?xml version="1.0" encoding="UTF-8"?>
<news>
  <new><title><![CDATA[<p>bla bla bla</p>]]></title><content><![CDATA[<p>bla bla bla</p>]]></content></new>
  <new><title><![CDATA[<p>bla bla bla</p>]]></title><content><![CDATA[<p>bla bla bla</p>]]></content></new>
  <new><title><![CDATA[<p>bla bla bla</p>]]></title><content><![CDATA[<p>bla bla bla</p>]]></content></new>
</news>

PHP 脚本

<?php
$xml = new DOMDocument();
$xml->load('./test.xml');
$xpath = new DOMXPath( $xml );

$news = $xpath->query('//new');

var_dump($news->length);

完美returns“3”。

检查这个:

我修改了你的一些代码:

<?php
    $doc = new DOMDocument;

    // We don't want to bother with white spaces
    $doc->preserveWhiteSpace = false;

    $doc->Load('book.xml');

    $xpath = new DOMXPath($doc);
    // We starts from the root element
    $query = '//news';

    $news = $xpath->query($query);
    print_r($news); 

?>

我正在获取长度值1

book.xml

<?xml version="1.0" encoding="UTF-8"?>
<news><new><title>adsds</title><content>asdsa</content></new></news>