首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SelectSingleNode返回空值

SelectSingleNode返回空值
EN

Stack Overflow用户
提问于 2019-04-12 20:16:47
回答 1查看 571关注 0票数 0

我正在尝试从XML文档中选择和删除单个节点。示例代码和下面的XML:

代码语言:javascript
复制
[xml]$xml = Get-Content MyXml.xml    
$xml.MigrationTable.Mapping[1].SelectSingleNode("DestinationSameAsSource")

这当前不返回任何内容。此answer显示了一个C#示例,用于在调用SelectSingleNode()方法时包含命名空间。

如何在PowerShell中包含带有SelectSingleNode()的命名空间?

XML:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-16"?>
<MigrationTable xmlns="http://microsoft.com/GroupPolicy/GPOOperations/MigrationTable" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Mapping>
<Type>LocalGroup</Type>
<Source>Group1@Contoso.local</Source>
<Destination>Group2@contoso.local</Destination>
</Mapping>
<Mapping>
<Type>Unknown</Type>
<Source>Network Service</Source>
<DestinationSameAsSource/>
</Mapping>
<Mapping>
<Type>Unknown</Type>
<Source>Local Service</Source>
<DestinationSameAsSource/>
</Mapping>
</MigrationTable>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-12 20:40:58

用于处理NameTable的Powershell语法与C#非常相似。加载数据后,基于XML文档创建一个NamespaceManager。

要选择元素,需要使用dummy namespace prefix,在本例中,在Xpath中添加和使用了x。就像这样,

代码语言:javascript
复制
[xml]$xml = Get-Content MyXml.xml
$nsmgr = new-object Xml.XmlNamespaceManager($xml.NameTable)
$nsmgr.AddNameSpace("x", "http://microsoft.com/GroupPolicy/GPOOperations/MigrationTable")
$xml.MigrationTable.Mapping[1].SelectSingleNode("x:DestinationSameAsSource", $nsmgr)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55651448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档