2015-11-03 36 views
1

某些XML子元素的所有孩子我有XML這樣的:獲取使用的SimpleXMLElement和XPath

<root xmlns="urn:test:apis:baseComponents"> 
    <books> 
    <book> 
     <name>50 shades of grey</name> 
    </book> 
    </books> 
    <disks> 
    <disk> 
     <name>Britney Spears</name> 
    </disk> 
    </disks> 
</root> 

而這樣的PHP代碼:

$xml = new SimpleXMLElement($xml); 
$books = $xml->books; 
$disks = $xml->disks; 

$disks->registerXPathNamespace('x', 'urn:test:apis:baseComponents'); 
$books->registerXPathNamespace('x', 'urn:test:apis:baseComponents'); 

$b_names = $books->xpath('//x:name'); 

b_names包含2個值代替1.首先陣列保存書籍 - >書籍 - >名稱,其次保存磁盤 - >磁盤 - >名稱。

你能解釋一下我做錯了什麼,我怎麼能找到只有一個元素的孩子?

我使用xpath而不是使用SimpleXMLElement手動設置值的原因是我不知道我想提前搜索哪個值。

回答

1

使用$books->xpath('.//x:name')來搜索$books變量的後代,而不是根節點/文檔節點的後代(其路徑爲//x:name)。

+0

就這麼簡單。謝謝! – eatmypants