simplexml
如果我混淆了某些术语,我是新手,请原谅我:)
我将以下 xml 文件存储在js/data.xml
:
<users>
<user>
<id>2011</id>
<posX>12</posX>
<posY>29</posY>
<title>Senior Developer</title>
</user>
<user>
<id>2022</id>
<posX>45</posX>
<posY>87</posY>
<title>Test22 text</title>
</user>
</users>
我有一个带有工作代码的 php 文件来添加更多用户:
$xml = simplexml_load_file("js/data.xml");
$user = $xml->addChild('user');
$user->addChild('id',2022);
$user->addChild('posX',34);
$user->addChild('posY',67);
$user->addChild('title','Test33 text');
// Store new XML code in data.xml
$xml->asXML("js/data.xml");
echo $xml->asXML();
这将在文件中添加一个新用户。到目前为止一切顺利,这里没有问题。
如果您仔细查看代码,您会发现我要添加的这个新用户与 xml 文件中的用户具有相同的 id (2022)。这是同一个人,所以在这种情况下,我不想添加他,而是更新他。这就是问题开始的地方。
要更新他,我首先需要检查 ID 是否存在。我做了一些 google-ing 并搜索了这个站点并找到了这里给出的解决方案:php SimpleXML check if a child exists问题是,我无法让它工作。
这是我的php文件的修改代码:
$xml = simplexml_load_file("js/data.xml");
//from: https://stackoverflow.com/questions/1560827/php-simplexml-check-if-a-child-exist
if (isset($xml->user->id->2022)) { // c exists
echo "test";
} else { //else add it
$user = $xml->addChild('user');
$user->addChild('id',2022);
$user->addChild('posX',45);
$user->addChild('posY',87);
$user->addChild('title','Test33 text');
}
// Store new XML code in data.xml
$xml->asXML("js/data.xml");
echo $xml->asXML();
所以在这里我尝试检查 id 是否存在。如果是这样:echo
某事,否则添加此人。不幸的是,当我运行此代码时,出现以下错误:
Parse error: syntax error, unexpected T_LNUMBER, expecting T_STRING or T_VARIABLE or '{' or '$'
有人知道我在这里做错了什么吗?
我遇到的第二个问题是如果存在则更新孩子(posX
和posY
)title
(id
当然只有与此 ID 分组的孩子)。这部分代码需要位于测试回显的位置。我在此站点或使用 simplexml 的 google 上找不到有效的解决方案。有谁知道如何做到这一点?
感谢您的时间