我有一个PHP文件,它读取XML文件并使用for循环将数据显示为HTML5 <article>
对象。所有这些都像冠军一样。我遇到的问题似乎与XML文件本身的数据有关。我的数据与此类似:
<articles>
<article>
<num>1</num><text>This is one.</text>
</article>
<article>
<num>2</num><text>This is <a href='./two.htm'>two</a>.</text>
</article>
<article>
<num>3</num><text>This is three.</text>
</article>
</articles>
我像这样加载XML:
$xml = simplexml_load_file("./articles_test.xml");
输出如下:
This is one.
This is .
This is three.
我尝试使用HTML实体名称和其他一些内容进行转义,引用无济于事。感谢帮助。感谢。
答案 0 :(得分:2)
CDATA - XML解析器不应解析的文本数据。
<article>
<num>2</num>
<text>
<![CDATA[
This is <a href='./two.htm'>two</a>.
]]>
</text>
</article>
修改强>
我可以推荐PHP的Dom,它非常强大,因为它可以让你轻松解析HTML内容。以下是您可能感兴趣的热门利弊问题。What's the difference between PHP's DOM and SimpleXML extensions?
$doc = new DomDocument();
$file = "../articles_test.xml";
$doc->load($file);
$xPath = new DomXPath($doc);
$article_text = $xPath->query("//article/text")->item(1);
echo $article_text->nodeValue;
答案 1 :(得分:0)
您需要使用asXML()
输出:
<?php
$string = <<<XML
<?xml version='1.0'?>
<articles>
<article>
<num>1</num><text>This is one.</text>
</article>
<article>
<num>2</num><text>This is <a href='./two.htm'>two</a>.</text>
</article>
<article>
<num>3</num><text>This is three.</text>
</article>
</articles>
XML;
$xml = simplexml_load_string($string);
print_r($xml->asXML());
在此处查看此行动:http://codepad.org/EW9yQcdM