請教一個XML問題
這是一個IP安全性原則的 XML ,意思是每個使用者只能在 ip為 裡面內容時才能登陸, 我想知道怎麼修改 和刪除某個使用者的 ip列表, 我用的是 DOMDOCUMENT();
192.168.1.1
192.168.1.2 //舉個例子 假設,我想修改或刪除admin ip2的,其他的保持不變
192.168.1.3 //因為節點名都相同, 我這裡是不是要給 加id
192.168.1.4
192.168.1.5
192.168.1.11
192.168.1.12
192.168.1.13
192.168.1.14
192.168.1.15
192.168.1.21
192.168.1.22
192.168.1.23
192.168.1.24
192.168.1.25
------解決方案--------------------
悲劇啊悲劇啊。 domDocument是非常標準的DOM模型,php manual詳細的方法和例子,為什麼偷懶?
------解決方案--------------------
PHP code
192.168.1.1192.168.1.2 192.168.1.3 192.168.1.4192.168.1.5192.168.1.11192.168.1.12192.168.1.13192.168.1.14192.168.1.15192.168.1.21192.168.1.22192.168.1.23192.168.1.24192.168.1.25EOF;$dom = new DOMDocument();$ret = $dom->loadXML($xml, LIBXML_NOBLANKS);$xpath = new DOMXpath($dom);$node_list = $xpath->query('/user/username[@name="admin"]/iplist');for ($i = 0; $i != $node_list->length; ++ $i) { echo $node_list->item($i)->nodeValue . PHP_EOL;}?>
------解決方案--------------------
PHP code
$s =<<< XML192.168.1.1192.168.1.2192.168.1.3192.168.1.4192.168.1.5192.168.1.11192.168.1.12192.168.1.13192.168.1.14192.168.1.15192.168.1.21192.168.1.22192.168.1.23192.168.1.24192.168.1.25XML;$dom = new domDocument;$dom->loadXML($s);$xpath = new DOMXPath($dom);//使用xpath定位修改$p = $xpath->query("//username[@name='admin']/iplist[.='192.168.1.1']")->item(0);$p->nodeValue = 'abcd';//使用xpath定位刪除$p = $xpath->query("//username[@name='admin']/iplist[.='192.168.1.2']")->item(0);$p->parentNode->removeChild($p);echo $dom->saveXML();