XML数据中的超链接不会显示在PHP文件中

时间:2013-08-03 17:42:38

标签: php xml html5

我有一个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实体名称和其他一些内容进行转义,引用无济于事。感谢帮助。感谢。

2 个答案:

答案 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