<?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;
}
?>
答案 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文档的上下文中没有任何意义。