PHP XML DOM添加、修改和更新



我有一个名为"apps.XML"的XML文件,其结构如下:

<?xml version="1.0" encoding="utf-8"?>
<applications>
<app id="b461ae4a" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
<app id="1c94395b" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
</applications>

我希望能够使用我的网站上运行的PHP脚本($_GET(、DOM和Xpath添加、修改和更新(保存对文件的更改(上述XML文件。

添加新的XML条目(最后一行(后,文件输出将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<applications>
<app id="b461ae4a" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
<app id="1c94395b" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
<app id="d65k274p" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
</applications>

修改/更新后(修改/更新的第一个条目(将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<applications>
<app id="b461ae4a" valid="1" company="Orange Inc." appname="None" user="tommy" description="Test" note="None" />
<app id="1c94395b" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
<app id="d65k274p" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
</applications>

并添加更多我正在努力实现的示例:

http://www.myadress.com/apps.php?append=1&id=d65k274p&valid=1&company=Orange%20Inc&appname=None&user=admin&description=Test&note=None
// Append argument would decide to add a whole new entry set to 1 or if it is on 0 then to be modified the whole entry by given "id".
$xappend = $_GET["append"];
$xid = $_GET["id"];
$xvalid = $_GET["valid"];
$xcompany = $_GET["company"];
$xappname = $_GET["appname"];
$xuser = $_GET["user"];
$xdescription = $_GET["description"];
$xnote = $_GET["note"];
if (file_exists('apps.xml')) {
$xorig = simplexml_load_file('apps.xml');
} else {
exit('Failed to open apps.xml !');
}

如有任何帮助,我们将不胜感激!

试试这种方法,看看它是否适用于实际的xml:

<?php
$original = <<<SNIPPET
<applications>
<app id="b461ae4a" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
<app id="1c94395b" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
</applications>
SNIPPET;
$xorig = simplexml_load_string($original);
$ins_pnt = $xorig->xpath('/applications');
$target = $xorig->xpath('/applications/app[1]');
$new_node = clone $target[0];
$new_node['id'] = "d65k274p";
// the function is lifted from https://stackoverflow.com/a/4778964/9448090
function node_append(SimpleXMLElement $to, SimpleXMLElement $from) {
$toDom = dom_import_simplexml($to);
$fromDom = dom_import_simplexml($from);
$toDom->appendChild($toDom->ownerDocument->importNode($fromDom, true));
}
node_append($ins_pnt[0], $new_node); 
echo $xorig->asXML();

输出:

<?xml version="1.0" encoding="UTF-8"?>
<applications>
<app id="b461ae4a" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
<app id="1c94395b" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
<app id="d65k274p" valid="0" company="Lemon Inc." appname="None" user="admin" description="Test" note="None" />
</applications>

经过长时间的学习,作为一名初学者,我终于做到了这一点:

$xmlFile = 'apps.xml';
$xorig = simplexml_load_file($xmlFile) or die('0');
$app = $xorig->addChild('app');
$app->addAttribute('id', $xid);
$app->addAttribute('valid', $xval);
$app->addAttribute('company', $xcmp);
$app->addAttribute('appname', $xanam);
$app->addAttribute('user', $xusr);
$app->addAttribute('description', $xdesc);
$app->addAttribute('note', $xnote);

最新更新