好的。真的希望有人可以帮助我回答以下问题。因此,我在最后一年的项目中使用 XML 数据存储来实现持久性。这是 XML 文件的结构。
<?xml version="1.0"?>
<!DOCTYPE datastore SYSTEM "datastore.dtd">
<datastore>
<dataset>
<name>Test1</name>
<dataobject>
<userid>001</userid>
<adl1/>
<adl2/>
<adl3/>
<city>London</city>
<county/>
<postcode>SE1 7HS</postcode>
<country>United Kingdom</country>
<amount>300.0</amount>
<date>01/01/2013</date>
</dataobject>
</dataset>
<dataset>
<name>Test2</name>
<dataobject>
<userid>001</userid>
<adl1/>
<adl2/>
<adl3/>
<city>Tunbridge Wells</city>
<county>Kent</county>
<postcode>TN1 2GE</postcode>
<country>United Kingdom</country>
<amount>20</amount>
<date>01/07/2013</date>
</dataobject>
</dataset></datastore>
我希望用户能够做的一件事是添加一个新数据集。很简单。所以我使用了下面的小 jQuery 函数和 PHP 脚本。
function addDataSetToXML(dataset){
$.ajax({
type:'GET',
url:'/phpScripts/addDataSet.php',
data:{dataset : dataset},
success:function(){
window.alert("Added dataset " + dataset + " to gsdatastore.xml");
},
error:function() {window.alert("Did not work");}
});
}
这是addDataset.php:
<?php
$name = $_GET[$dataset];
$doc = new DOMDocument();
$xml = "../dataStore/gsdatastore.xml";
$doc->Load($xml);
$doc->formatOutput = true;
$newDataSetElement = $doc->createElement("dataset");
$newNameElement = $doc->createElement("name",$dataset);
$newDataSetElement->appendChild($newNameElement);
$root = $doc->documentElement;
$root->appendChild($newDataSetElement);
$doc->Save($xml);
?>
我在代码中找不到任何错误,当脚本运行时,我收到了成功消息。我使用了 Firebug,最后在响应消息中找到了以下内容(HTTP GET 返回 200 OK 消息,因此它肯定会找到脚本并运行它)。
XML 解析错误:找不到元素位置:moz-nullprincipal:{8b768c4c-ef3c-644a-ae97-dd38798b8ba1} 第 13 行,第 3 列:
?> --^
有谁知道这意味着什么?这一直在做我的头脑。非常感谢任何帮助。