Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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/2/powershell/11.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
Xml 使用Powershell删除节点_Xml_Powershell_Xpath - Fatal编程技术网

Xml 使用Powershell删除节点

Xml 使用Powershell删除节点,xml,powershell,xpath,Xml,Powershell,Xpath,您好,您在XML文档上定义了名称空间,但没有限定XPath。执行以下操作: [xml]$xml = gc C:\Users\username\Downloads\Test.xml $supervisor = $xml.SelectSingleNode('//People/Person/EmploymentInformation/Supervisor') $employmentInformation = $xml.SelectSingleNode('//People/Person/Employm

您好,您在XML文档上定义了名称空间,但没有限定XPath。执行以下操作:

[xml]$xml = gc C:\Users\username\Downloads\Test.xml

$supervisor = $xml.SelectSingleNode('//People/Person/EmploymentInformation/Supervisor')
$employmentInformation = $xml.SelectSingleNode('//People/Person/EmploymentInformation')
[void]$employmentInformation.RemoveChild($supervisor)
$xml.Save('C:\Users\username\Downloads\Result.xml')
如果您希望与多人一起执行此操作,则应执行以下操作:

[xml]$xml = gc C:\Users\username\Downloads\Test.xml

$mgr = New-Object -TypeName System.Xml.XmlNamespaceManager -ArgumentList $xml.NameTable
$mgr.AddNamespace("bob","TestData")

$supervisor = $xml.SelectSingleNode('//bob:People/bob:Person/bob:EmploymentInformation/bob:Supervisor', $mgr)
$employmentInformation = $xml.SelectSingleNode('//bob:People/bob:Person/bob:EmploymentInformation', $mgr)
[void]$employmentInformation.RemoveChild($supervisor)
$xml.Save('C:\Users\username\Downloads\Result.xml')
也可以使用Powershell对XML的内置支持:

[xml]$xml = gc .\Test.xml

$mgr = New-Object -TypeName System.Xml.XmlNamespaceManager -ArgumentList $xml.NameTable
$mgr.AddNamespace("bob","TestData")

$supervisors = $xml.SelectNodes('//bob:People/bob:Person/bob:EmploymentInformation/bob:Supervisor', $mgr)

foreach ($supervisor in $supervisors)
{
        $supervisor.ParentNode.RemoveChild($supervisor)
}

$xml.Save('.\Result.xml')

当Xml文档名称空间从xmlns=“tnw:grc:import:people”更新到xmlns=“TestData”时,我更新了上面的代码。谢谢Dan!这很有效,但我注意到这只是从第一人称中删除了主管。。。我没有将其包含在上面的XML文档中,但我有多个人希望删除此节点。
[xml]$xml = gc .\Test.xml

$mgr = New-Object -TypeName System.Xml.XmlNamespaceManager -ArgumentList $xml.NameTable
$mgr.AddNamespace("bob","TestData")

$supervisors = $xml.SelectNodes('//bob:People/bob:Person/bob:EmploymentInformation/bob:Supervisor', $mgr)

foreach ($supervisor in $supervisors)
{
        $supervisor.ParentNode.RemoveChild($supervisor)
}

$xml.Save('.\Result.xml')
[xml]$xml = gc .\Test.xml

foreach ($supervisor in $xml.People.Person.EmploymentInformation.Supervisor)
{
        $supervisor.ParentNode.RemoveChild($supervisor)
}

$xml.Save('.\Result.xml')