-1

我有一个 xml 文件 (scores.xml),我使用 php 代码向它添加新标签。

我有一个名为 Header 的标签,其中包含一些 html 代码

<![CDATA[<tr><td colspan='7' id='headertd'>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<img border='0' src='images/euro.png' />
&nbsp;&nbsp;&nbsp;&nbsp;
UEFA Euro 2012 Qualifications</td></tr>]]>

当我以 pgp 脚本的形式编写此代码并提交除标头标记外的所有 XML 文件时,一切正常......我在 php 脚本中遇到错误,并且代码在 xml 标记中是这样的:

&lt;![CDATA[&lt;tr&gt;&lt;td colspan='7' id='headertd'&gt;&#13;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#13;
&lt;img border='0' src='images/euro.png' /&gt;&#13;
&nbsp;&nbsp;&nbsp;&nbsp;&#13;
UEFA Euro 2012 Qualifications&lt;/td&gt;&lt;/tr&gt;]]&gt;

所以我的xml得到了错误的信息......无论如何我可以解决这个问题吗?并避免这些代码的转换?

那是我的 php 代码:

<?php
if (isset($_POST['submitted'])) {//If the user submitted the form, then add to the XML file
    //Load the scores XML file
    $scores = new DOMDocument();
    $scores -> load('../scores.xml');

    //Get the <Games> tag
    $games = $scores -> getElementsByTagName('Games');

    //Create the new <Game> tag 

    $newGame = $scores -> createElement("Game");
    $newGame -> appendChild($scores -> createElement("Header", $_POST['header']));

    //Add the new <Game> tag under the <Games> tag
    $games -> item(0) -> appendChild($newGame);

    //Save again
    $scores -> save('../scores.xml');

    echo "New game added.";
}
?>

<form id="form1" method="post" action="">
Header: <textarea style=" color:#000;" name="header" cols="73" rows="6" > </textarea>
<br><input type="submit" name="submitted" name="Add new row">
</form>

我没有用户界面,我只是使用这个脚本让我更容易在我的网站上发布东西!

非常感谢您的帮助!

提前致谢!

4

2 回答 2

2

[edit 2] 嗯,不好意思答错了,我在想,但是PHP脚本将其转换为“编码”形式是很正常的,因为当您添加html标签时,xml结构将被破坏所以它必须被编码。因此,稍后当您尝试检索数据时,您必须使用 html_entity_decode() 对其进行解码,以将其正确导出到浏览器。

[edit1] 如我所见,内容是“编码的”,因此在保存数据之前使用 html_entity_decode() 对其进行解码。这里是“最终”代码:

<?php
if (isset($_POST['submitted'])) {//If the user submitted the form, then add to the XML file
    //Load the scores XML file
    $scores = new DOMDocument();
    $scores -> load('../scores.xml');

    //Get the <Games> tag
    $games = $scores -> getElementsByTagName('Games');

    //Create the new <Game> tag 

    $newGame = $scores -> createElement("Game");
    $newGame -> appendChild($scores -> createElement("Header", html_entity_decode($_POST['header'])));

    //Add the new <Game> tag under the <Games> tag
    $games -> item(0) -> appendChild($newGame);

    //Save again
    $scores -> save('../scores.xml');

    echo "New game added.";
}
?>

<form id="form1" method="post" action="">
Header: <textarea style=" color:#000;" name="header" cols="73" rows="6" > </textarea>
<br><input type="submit" name="submitted" name="Add new row">
</form>
于 2012-05-20T19:27:47.307 回答
1

在将内容放入标签之前尝试对内容使用html_entity_decode 。$_POST['header']<Game>

于 2012-05-20T19:28:02.390 回答