php xml with xsd foreach,找出哪个块

时间:2014-06-12 06:53:17

标签: php xml foreach xsd

我用xsd读出了一个xml文件,代码为:

 foreach ($xpath->evaluate('//caaml:validAspect') as $expositons) {
    echo $xpath->evaluate('string(@xlink:href)', $expositons)."<br>";
 }

这里我得到了所有结果,但我无法将它们分配给它们。 我也试过这个:

foreach ($xpath->evaluate('//caaml:DangerRating') as $dangerRating) {
    echo $xpath->evaluate('string(caaml:validAspect/@xlink:href)', $dangerRating)."<br>";
}

这里我只得到validAspect字段的第一个值。

这是xml结构:

enter image description here

现在我的问题是我怎样才能找到数据块?

谢谢!

现在我尝试了这个:

foreach ($xpath->evaluate('//caaml:DangerRating') as $i => $block) {
  echo "block $i\n";
  foreach ($xpath->evaluate('/caaml:validTime/caaml:validAspect', $block) as $expositions) {
    echo $xpath->evaluate('string(@xlink:href)', $expositons)."<br>";
  }
}

但我没有得到任何结果......

1 个答案:

答案 0 :(得分:2)

你可以先获得阻止然后是

部分
<?php
$xml = new DOMDocument;
$xml->load("test.xml"); 
$xpath = new DOMXPath($xml);
foreach ($xpath->evaluate('//caaml:DangerRating') as $i => $block) {
    echo "block $i\n";
    foreach ($xpath->evaluate('./caaml:validAspect', $block) as $expositions) {
        echo $xpath->evaluate('string(@xlink:href)', $expositions) . "\n";
    }
}