簡體   English   中英

Xpath獲取特定的屬性值

[英]Xpath get specific attribute values

我得到這個XML:

            <shipping_line>
                <article id="960382" quantity="500" />
                <article id="960560" quantity="150" />
                <article id="960426" quantity="250" />
                <article id="1177" quantity="100" >
                    <product>5500070000126273</product>
                    <product>5500070000126264</product>
                    <product>5500070000126255</product>
                    <product>5500070000126246</product>
                    <product>5500070000126237</product>
                </article>
            </shipping_line>

我訪問文章元素的atributes ID和quantity是這樣的:

$atrs = $xml->xpath('//article[not(node())]/@quantity | //article[not(node())]/@id');

現在我想訪問這兩個foreach的2個值:

            foreach ($atrs as $id => $val ) {

                error_log(print_r($val , true));

            }

我的錯誤日志顯示了這一點:

 SimpleXMLElement Object\n(\n    [@attributes] => Array\n        (\n            [id] => 960382\n        )\n\n)\n
 SimpleXMLElement Object\n(\n    [@attributes] => Array\n        (\n            [quantity] => 500\n        )\n\n)\n
 SimpleXMLElement Object\n(\n    [@attributes] => Array\n        (\n            [id] => 960560\n        )\n\n)\n
 SimpleXMLElement Object\n(\n    [@attributes] => Array\n        (\n            [quantity] => 150\n        )\n\n)\n
 SimpleXMLElement Object\n(\n    [@attributes] => Array\n        (\n            [id] => 960426\n        )\n\n)\n
 SimpleXMLElement Object\n(\n    [@attributes] => Array\n        (\n            [quantity] => 250\n        )\n\n)\n

我如何訪問2個值,以便可以使用someFunctionUsing2Values($article_no , $quantity)類的函數

這是我的處理方式:

$xml = new SimpleXMLElement('
<shipping_line>
    <article id="960382" quantity="500" />
    <article id="960560" quantity="150" />
    <article id="960426" quantity="250" />
    <article id="1177" quantity="100" >
        <product>5500070000126273</product>
        <product>5500070000126264</product>
        <product>5500070000126255</product>
        <product>5500070000126246</product>
        <product>5500070000126237</product>
    </article>
</shipping_line>');

$nodes = $xml->xpath('//article[not(node())]');
foreach ($nodes as $node)
{
    fn($node['id'], $node['quantity']);
}

function fn($id, $quantity)
{
    echo "$id -> $quantity<br>";
}

暫無
暫無

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

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