如何在使用php解析时从XML文件中获取链接和粗体表示法?

时间:2017-01-25 16:09:46

标签: php xml

<?xml version="1.0" encoding="utf-8"?>
<activities>
<activity category="Team">
<date><h4>Date: January 15, 2017</h4></date>
<work> 
    <li><b>MR X</b> working on X</li>
    <li><b>MR Y</b> working on Y</li>
    <li><b>MR Z</b> working on <a href="#">Z</a></li>
</work>
</activity>
</activities>

以上是XML文件。假设文件名是activities.xml。

现在我想解析php中的数据。但我希望<b><a>标记完好无损。意味着我想在使用li标签解析时直接获取行<b>MR Z</b> working on <a href="#">Z</a>。那可能吗?如何获取带有链接的文本并显示它?

我的PHP代码如下所示:

<?php
 $xmls=simplexml_load_file("activities.xml") or die("Error: Cannot create object");
foreach ($xmls as $xml) {
 echo $xml->date;
 echo $xml->work;
}
?>

2 个答案:

答案 0 :(得分:0)

您可以使用asXML功能输出您想要的方式:

--inline-scripts
--exclude

但在这里使用foreach ($xmls->activity as $xml) { echo $xml->date->asXml(); echo $xml->work->asXml(); } 是更好的选择,是发送此类数据的正确方法。

答案 1 :(得分:0)

您确实需要保持HTML和XML分离。您可以在XML中使用<![CDATA[ ... ]]>告诉XML解析器没有需要担心的XML标记。

例如;

<?xml version="1.0" encoding="utf-8"?>
<activities>
<activity category="Team">
<date><h4>Date: January 15, 2017</h4></date>
<work> 
    <li><![CDATA[<b>MR X</b> working on X]]></li>
    <li><![CDATA[<b>MR Y</b> working on Y]]></li>
    <li><![CDATA[<b>MR Z</b> working on <a href="#">Z</a>]]></li>
</work>
</activity>
</activities>

意味着您可以遍历$xml->work并简单地将每个<li>的内容回显到页面上(我假设您想要做的事情)。

顺便说一句,如果您确实可以完全控制XML文件,我建议您从中删除 HTML-ness <li>在XML文档的上下文中没有任何意义。