![](/img/trans.png)
[英]What is the difference between DOMXPath::evaluate and DOMXPath::query?
[英]Query errors in DOMXPath
我正在嘗試使用PHP中的DOMXPath類解析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>
DOMX路徑
$xml = new DOMDocument();
$xml->load( $filename );
$xpath = new DOMXPath( $xml );
$news = $xpath->query('//news');
$ news長度始終為0,並且xml文件中存在新聞標簽。
我究竟做錯了什么?
最好的祝福,
伊斯梅爾。
請注意,您正在查詢根標記(“新聞”),這有點用處,因為每個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);
完美返回“ 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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.