[英]Why doesn't my code properly parse this XML file?
我试图解析PHP中的xml日志文件。 具有以下结构
<log>
<logentry revision="1745">
<author>abc</author>
<date>2010-08-31T20:46:29.691125Z</date>
<paths>
<path kind="" action="M">/trunk/myserver/abc.java</path>
<path kind="" action="M">/trunk/myserver/test.java</path>
<path kind="" action="M">/trunk/myserver/xmltest.java</path>
</paths>
<msg>how to make it work!</msg>
</logentry>
</log>
如何从该xml文件提取所有数据? 如何循环记录文件以提取所有数据? 我也想从行动中获得那个M。
我也尝试过此代码,但无法使它适用于整个文件。
$xml = simplexml_load_file("test.log");
echo $xml->getName();
foreach($xml->children() as $child)
{
echo $child->getName() . ": " . $child . "<br />";
}
您可以为此目的使用simplexml
$xmlStr = <<<XML
<log>
<logentry revision="1745">
<author>abc</author>
<date>2010-08-31T20:46:29.691125Z</date>
<paths>
<path kind="" action="M">/trunk/myserver/abc.java</path>
<path kind="" action="M">/trunk/myserver/test.java</path>
<path kind="" action="M">/trunk/myserver/xmltest.java</path>
</paths>
<msg>how to make it work!</msg>
</logentry>
</log>
XML;
$xml = new SimpleXMLElement($xmlStr);
foreach($xml->logentry as $entry){
echo "revision: {$entry['revision']}" . PHP_EOL;
echo "author: {$entry->author}" . PHP_EOL;
echo "paths:" . PHP_EOL;
foreach($entry->paths->path as $pa){
echo "\t kind: {$pa['kind']} action: {$pa['action']} path: {$pa}" . PHP_EOL;
}
echo "message: {$entry->msg}" . PHP_EOL;
}
使用PHP的DOMDocument类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.