我的xml标记格式为
<transcript>
<messages>
<message>
<to>user1@localhost.local</to>
<from>user2@localhost.local</from>
<body>hello</body>
<date>2014-09-09 14:14:17.652 IST</date>
</message>
<message>
<to>user2@localhost.local</to>
<from>user1@localhost.local</from>
<body>hi dear</body>
<date>2014-09-10 14:14:17.652 IST</date>
</message>
</messages>
</transcript>
我想加载此xml文件并以
之类的格式显示结果2014-09-09 - Tuesday
(2:14 PM ) user1 : hello
2014-09-10 - Wednesday
(2:14 PM )user2 : hi dear
我试过这个PHP代码
$xml_file_path='filename_with_path';
$XMLReader->open($xml_file_path);
while ($XMLReader->read() && $XMLReader->name !== "transcript");
while ($XMLReader->read() && $XMLReader->name !== "messages");
while ($XMLReader->read() && $XMLReader->name !== "message");
while ($XMLReader->name === "message") {
$node = new SimpleXMLElement($XMLReader->readOuterXML());
}
但是$ node给我空的结果,我该如何解决它或我错在哪里。
答案 0 :(得分:0)
我个人讨厌xml,我知道它是一个成熟的标准,但我讨厌使用非原生数据存储。甚至数据库也让我烦恼。
如果我可以稍微重构你的代码......
//This turns your xml into a php object, which can be manipulated more directly
if (file_exists('text.xml')) {
$xml = simplexml_load_file('text.xml');
}
然后你可以简单地输出
$totalMessages = count( $xml->messages->message );
for($i = 0; $i < $totalMessages; $i++){
echo "{$xml->messages->message[$i]->date}<br>
{$xml->messages->message[$i]->from}: {$xml->messages->message[$i]->body}<br><br>";
}
此输出
2014-09-09 14:14:17.652 IST
user2@localhost.local: hello
2014-09-10 14:14:17.652 IST
user1@localhost.local: hi dear
我把它留给你切片和切块以获得美味。