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>
我正在尝试使用 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>