如何根据标签值来订购XML返回?

时间:2011-04-28 18:49:50

标签: php xml

假设我有一个动态加载返回XML的方法返回的php页面。 XML是这样的:

<SYSTEM>
  <GUY>
    <ID>500</ID>
    <NAME>Joseph</NAME>
    <EMAIL>joseph@mark</EMAIL>
    <ERROR />
  </GUY>
  <GUY>
    <ID>510</ID>
    <NAME>Richard</NAME>
    <EMAIL>richard@gmail.com</EMAIL>
  </GUY>
</SYSTEM>

现在我的PHP文件有一个简单的“if”来检查ERROR标记。如果检测到它,则会输出错误。 现在的结果是在正确的打印(理查德)之前打印错误。两者都应该打印,但我想在正确结果之后将错误放在底部。首先打印错误,因为它是XML的第一个结果。我怎么能绕过那个? 我认为这可能很简单,但我真的没有得到它。

我的PHP验证是这样的(它根据GUY标签的数量运行,因此根据我上面的XML,它将是两次):

$xmlresult = simplexml_load_string($xml);
$error = $xmlresult->xpath("//ERROR");

if($error==true){
   echo "error message here";
} else {
   echo "wee! no errors!"
}

1 个答案:

答案 0 :(得分:0)

我接近这个的方法是在浏览XML文件时暂时将任何错误结果存储在列表中,然后打印好的文件。然后,一旦到达文件的末尾,您就可以浏览错误列表并在所有错误列表之后打印出来。

这种简单的算法应该适用于任何通过XML的方法,包括一个可以返回漂亮对象的解析库,以及更强大的基于字符串的方法。