2017-10-17 248 views
1

我知道這個問題以前已經被問到過,但我無法完成工作。我在PHP文件中使用simplexml和xpath。我需要從包含其子節點中的文本的節點獲取文本。所以,結果應該是:PHP XML:獲取節點及其子節點的文本

Mr.Smith bought a white convertible car. 

這裏是XML:

<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="test9.xsl"?> 
<items> 
    <item> 
     <description> 
      <name>Mr.Smith bought a <car>white</car> <car>convertible</car> car.</name> 
     </description> 
    </item> 
</items> 

PHP的,這不是工作是:

$text = $xml->xpath('//items/item/description/name'); 
    foreach($text as &$value) { 
     echo $value; 
} 

請幫幫忙!

+0

發佈電流輸出 – RomanPerekhrest

回答

0

要獲得其所有子元素的節點值,可以使用DOMDocument,與C14n()

<?php 
$xml = <<<XML 
<?xml version="1.0" encoding="UTF-8"?> 
<?xml-stylesheet type="text/xsl" href="test9.xsl"?> 
<items> 
    <item> 
     <description> 
      <name>Mr.Smith bought a <car>white</car> <car>convertible</car> car.</name> 
     </description> 
    </item> 
</items> 
XML; 
$doc = new DOMDocument; 
$doc->loadXML($xml); 
$x = new DOMXpath($doc); 
$text = $x->query('//items/item/description/name'); 
echo $text[0]->C14n(); // Mr.Smith bought a white convertible car. 

Demo

+0

或者乾脆'$文本[0] - >的nodeValue ;'甚至'$ text [0] - > textContent;' – Parfait

+0

@Parfait謝謝!想象他也需要那裏的標籤,出於某種原因。 – ishegg

+0

由於某種原因,我沒有收到任何東西。你測試過了嗎? –