在php中使用simplexml删除节点
我有一个包含服务器的xml文件在php中使用simplexml删除节点,php,xml,Php,Xml,我有一个包含服务器的xml文件 <?xml version="1.0" encoding="UTF-8"?> <servers> <server> <location>Belgium</location> <ip>192.168.0.1</ip> <port>8080</port> <crt></crt>
<?xml version="1.0" encoding="UTF-8"?>
<servers>
<server>
<location>Belgium</location>
<ip>192.168.0.1</ip>
<port>8080</port>
<crt></crt>
</server>
<server>
<location>Fhoto</location>
<ip>192.168.0.5</ip>
<port>7841</port>
<crt>http://127.0.0.1/serv.crt</crt>
</server>
<server>
<location>TestingPanel</location>
<ip>192.168.1.2</ip>
<port>6969</port>
<crt>http://testingpanel.com/server.crt</crt>
</server>
<server>
<location>TestingPanel2</location>
<ip>192.168.1.3</ip>
<port>6968</port>
<crt>http://testingpanel.com/server1.crt</crt>
</server>
</servers>
请引导我在正确的方向,因为我不知道如何做到这一点。提前谢谢 我建议使用DomDocument和Xpath查找节点:
$xml = new DOMDocument();
$xml->load($filePath);
$xpathXml = new DOMXPath($xml);
您需要做的下一件事是查找节点:
$elements = $xpathXml->query("//Server[ip="$yourIp"]);
并从父节点中删除已找到的元素:
foreach ($elements as $element) {
$element->parentNode->removeChild($element);
}
我建议使用DomDocument和Xpath查找节点:
$xml = new DOMDocument();
$xml->load($filePath);
$xpathXml = new DOMXPath($xml);
您需要做的下一件事是查找节点:
$elements = $xpathXml->query("//Server[ip="$yourIp"]);
并从父节点中删除已找到的元素:
foreach ($elements as $element) {
$element->parentNode->removeChild($element);
}
我建议使用DomDocument和Xpath查找节点:
$xml = new DOMDocument();
$xml->load($filePath);
$xpathXml = new DOMXPath($xml);
您需要做的下一件事是查找节点:
$elements = $xpathXml->query("//Server[ip="$yourIp"]);
并从父节点中删除已找到的元素:
foreach ($elements as $element) {
$element->parentNode->removeChild($element);
}
我建议使用DomDocument和Xpath查找节点:
$xml = new DOMDocument();
$xml->load($filePath);
$xpathXml = new DOMXPath($xml);
您需要做的下一件事是查找节点:
$elements = $xpathXml->query("//Server[ip="$yourIp"]);
并从父节点中删除已找到的元素:
foreach ($elements as $element) {
$element->parentNode->removeChild($element);
}
使用循环通过
节点加载文件,并检查IP是否等于给定IP
如果是,请在上使用以将其卸下:
$xml = simplexml_load_file('file.xml');
foreach ($xml as $key => $server) {
if ( $server->ip != '192.168.0.1') {
continue;
}
unset($server[0]);
}
使用加载文件,循环通过
节点,检查IP是否等于给定的IP
如果是,请在上使用以将其卸下:
$xml = simplexml_load_file('file.xml');
foreach ($xml as $key => $server) {
if ( $server->ip != '192.168.0.1') {
continue;
}
unset($server[0]);
}
使用加载文件,循环通过
节点,检查IP是否等于给定的IP
如果是,请在上使用以将其卸下:
$xml = simplexml_load_file('file.xml');
foreach ($xml as $key => $server) {
if ( $server->ip != '192.168.0.1') {
continue;
}
unset($server[0]);
}
使用加载文件,循环通过
节点,检查IP是否等于给定的IP
如果是,请在上使用以将其卸下:
$xml = simplexml_load_file('file.xml');
foreach ($xml as $key => $server) {
if ( $server->ip != '192.168.0.1') {
continue;
}
unset($server[0]);
}
^它实际上与属性、元素类似,只需删除前面的
@
商业标记,然后xpath将其识别为元素(而不是属性)。-请特别参阅此答案中概述的技术:^它实际上与属性、元素类似,只需删除前面的@
商业标记,然后xpath将其识别为元素(而不是属性)。-请特别参阅此答案中概述的技术:^它实际上与属性、元素类似,只需删除前面的@
商业标记,然后xpath将其识别为元素(而不是属性)。-请特别参阅此答案中概述的技术:^它实际上与属性、元素类似,只需删除前面的@
商业标记,然后xpath将其识别为元素(而不是属性)。-请特别参阅此答案中概述的技术:您还可以使用以下条件启动xpath查询。@hakre:当前版本会发出警告。原始答案有什么问题?是的,警告需要中断:(考虑到它是要删除的一个元素)或者只是建议的xpath。怎么了?没什么问题,只是一些多余的操作,比如在PHP为您执行转换时强制转换为字符串,或者不使用unset,而是调用转换函数和其他对象方法。这可能更好:您还可以使用该条件启动xpath查询。@hakre:当前版本发出警告。原始答案有什么问题?是的,警告需要中断:(考虑到它是要删除的一个元素)或者只是建议的xpath。怎么了?没什么问题,只是一些多余的操作,比如在PHP为您执行转换时强制转换为字符串,或者不使用unset,而是调用转换函数和其他对象方法。这可能更好:您还可以使用该条件启动xpath查询。@hakre:当前版本发出警告。原始答案有什么问题?是的,警告需要中断:(考虑到它是要删除的一个元素)或者只是建议的xpath。怎么了?没什么问题,只是一些多余的操作,比如在PHP为您执行转换时强制转换为字符串,或者不使用unset,而是调用转换函数和其他对象方法。这可能更好:您还可以使用该条件启动xpath查询。@hakre:当前版本发出警告。原始答案有什么问题?是的,警告需要中断:(考虑到它是要删除的一个元素)或者只是建议的xpath。怎么了?没什么问题,只是一些多余的操作,比如在PHP为您执行转换时强制转换为字符串,或者不使用unset,而是调用转换函数和其他对象方法。这可能更好: