【发布时间】:2011-07-21 01:48:21
【问题描述】:
我有一个脚本,它通过从保存在服务器上的文件加载的 SimpleXML 对象。现在,如果在处理 XML 文件时出现问题,我希望脚本报告错误,最好是发生错误的子行。
XML 示例:
<xml>
<product>
<name>Product one</name>
<price>3.50</price>
</product>
<product>
<name>Product two</name>
<price>42.00</price>
</product>
</xml>
我的脚本像这样处理 XML 文件:
<?php
$log = 'Error log'.PHP_EOL;
$xml = simplexml_load_file('file.xml');
foreach($xml->'product' as $key->$val) {
if(everything_is($okay)) {
//process product
}
else {
$log .= 'There was an error with the product on line '.$childLine.PHP_EOL;
}
}
file_put_contents('log.txt',$log);
?>
现在,我需要知道的是,有没有办法在 XML 文件中找到 foreach 循环中的当前子项位于哪一行?..
我知道libxml_get_errors() 报告了 XML 错误的行,但是如果我确定产品有缺陷,我想找出该产品出现在 XML 文件中的哪一行。
我在想一些事情,我使用孩子的 $key 来询问 simpleXML 它在哪里找到那个孩子或其他东西,但我不知道如何。
如果有人有解决方案或建议,请随时分享。
【问题讨论】: