Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中使用simplexml删除节点_Php_Xml - Fatal编程技术网

在php中使用simplexml删除节点

在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文件

<?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,而是调用转换函数和其他对象方法。这可能更好: