0

我有一个 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 实体名称和其他一些东西都无济于事。感谢帮助。谢谢。

4

2 回答 2

2

CDATA - 不应由 XML 解析器解析的文本数据。

<article>
    <num>2</num>
    <text>
        <![CDATA[
            This is <a href='./two.htm'>two</a>.
        ]]>
    </text>
</article>

编辑

我可以推荐 PHP 的Dom,它非常强大,因为它可以让您轻松解析 HTML 内容。这是您可能感兴趣的一个流行的利弊问题。PHP 的 DOM 和 SimpleXML 扩展之间有什么区别?

$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;
于 2013-08-03T17:46:58.310 回答
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

于 2013-08-03T17:50:14.130 回答