簡體   English   中英

循環遍歷元素子元素

[英]looping through elements sub-elements

我試圖從一個看起來像http://chris.photobooks.com/xml/default.htm?state=8T的結構中提取數據

使用以下函數我試圖遍歷每個產品標簽

$dom = new DOMDocument;
$dom->loadXML($resp);
$xpath = new DOMXPath($dom);
$xpath->registerNamespace('ns2', 'http://mws.amazonservices.com/schema/Products/2011-10-01/default.xsd');
$xpath->registerNamespace('a', 'http://mws.amazonservices.com/schema/Products/2011-10-01');

foreach($xpath->query('//a:Product') as $product){
    echo $product->query('//ns2:ItemAttributes/ns2:Author')->item(0)->nodeValue
}

我現在意識到這是從for循環中提取數據的錯誤方法,但正確的方法是什么?

如果您需要特定標簽,您可以:

$dom = new DOMDocument;
$dom->loadXML($resp);

foreach($dom->getElementsByTagName("Product") as $product){
    echo $product->getElementsByTagName("Author")->item(0)->nodeValue."<br />";
}

否則(如果您需要整個數據)有社區制作的解決方案,用於將整個XML轉換為簡單的數組/對象。

我想你想要的

foreach($xpath->query('//a:Product') as $product){
    echo $xpath->query('.//ns2:ItemAttributes/ns2:Author', $product)->item(0)->textContent
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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