我正在创建一个界面网站来更新乐队网站上的音乐会列表。 该列表存储为XML文件,具有以下结构:
我已经编写了一个脚本,可以让我在列表中添加一个新的gig,这个相对容易... 现在我想编写一个脚本,使我能够编辑列表中的某个演出。 由于第一个属性:“id”,每个Gig都是唯一的。 我想使用此引用来编辑该节点中的其他属性。 我的PHP非常差,所以我希望有人能把我放在这里... 我的PHP脚本:答案 0 :(得分:2)
嗯,我不知道你的XML结构是什么样的,但是:
<gig id="someid">
<venue></venue>
<day></day>
<month></month>
<year></year>
</gig>
$xml = new SimpleXmlElement('gig.xml',null, true);
$gig = $xml->xpath('//gig[@id="'.$_POST['id'].'"]');
$gig->venue = $_POST['venue'];
$gig->month = $_POST['month'];
// etc..
$xml->asXml('gig.xml)'; // save back to file
现在,如果所有这些数据点都是属性,则可以使用$gig->attributes()->venue
来访问它。
除非您使用一个帖子进行多次更新,否则不需要循环 - 您可以通过XPAth查询获取任何特定记录。 SimpleDML也比DOMDOcument更轻,更易于使用这种类型的东西 - 特别是因为你没有使用DOMDocument的功能。
答案 1 :(得分:1)
您需要使用
在domdocument中加载xml文件<?
$xml = new DOMDocument();
$xml->load("xmlfile.xml");
//find the tags that you want to update
$tags = $xml->getElementsByTagName("GIG");
//find the tag with the id you want to update
foreach ($tags as $tag) {
if($tag->getAttribute("id") == $id) { //found the tag, now update the attribute
$tag->setAttribute("[attributeName]", "[attributeValue]");
}
}
//save the xml
$xml->save();
?>
代码未经测试,但这是一个大致的想法