2013-03-11 50 views
1

我期待xpath並從PHP中的文件中提取原始XML,但我不想將結果解析爲數組。我只是試圖從原始文檔中返回一個子集。從PHP中的xpath查詢返回原始XML?

我的原始文件的結構是這樣的:

<?xml version="1.0" encoding="utf-8"?> 
<root> 
    <row id="1"> 
     <child1>value1</child1> 
     <child2>value1</child2> 
     <child3>value1</child3> 
    </row> 
    <row id="2"> 
     <child1>value1</child1> 
     <child2>value1</child2> 
     <child3>value1</child3> 
    </row> 
</root> 

所有我想要做的是能XPATH成/根/行[@ ID = 「1」],返回此:

<?xml version="1.0" encoding="utf-8"?> 
<row id="1"> 
    <child1>value1</child1> 
    <child2>value1</child2> 
    <child3>value1</child3> 
</row> 

這是怎麼回事?

+0

您正在尋找的SimpleXML – mkaatman 2013-03-11 16:08:16

回答

1
$doc = new DOMDocument(); 
$doc->loadXML('<root>...</root>'); // or $doc->load($file) if loading from file 
$xpath = new DOMXpath($doc); 
$elements = $xpath->query("/root/row[@id='1']"); 
if ($elements) { 
    foreach ($elements as $item) { 
     echo $doc->saveXML($item), "\n"; 
    } 
} 

感謝@ fab的評論。我忘了that

+0

這將返回整個原始文件,而不是XPATH的結果。 – mordrukk218 2013-03-11 16:18:56

+1

這是一個很好的起點,但您需要從原始XML文件生成另一個XML文件。 – 2013-03-11 16:23:57

+3

不,你只需要傳遞節點作爲參數:'$ doc-> saveXML($ elements-> item(0));' – 2013-03-11 16:26:52

0

嘗試把一個頭這樣,

header('Content-Type: application/xml; charset=UTF-8');