2012-09-06 154 views
-1

我得到这个XML:Xpath的获取特定的属性值

  <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:

  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 

我怎么能进入两个值,这样我就可以使用这样的函数 someFunctionUsing2Values($article_no , $quantity)

回答

2

这是我会怎么做:

$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>"; 
} 
+2

现场例如:http://codepad.viper -7.com/Ug​​Vmco – j0k

+0

谢谢你这就是我需要测试的东西 –