簡體   English   中英

DOMXPath中的查詢錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM