【发布时间】:2011-05-17 13:36:55
【问题描述】:
我正在尝试使用 select-xml 从 SharePoint 解决方案中删除一些内容。我有一个包含许多功能的解决方案目录,而不是打开每个feature.xml 并手动选择功能名称并将它们放入列表中,我希望使用powershell 和select-xml 来完成等效操作。
我的尝试是这样的:
ls -recurse -filter feature.xml | select-xml "/Feature"
我什么也没得到,所以我尝试了这个:
ls -recurse -filter feature.xml | select-xml "//*"
这似乎做了它应该做的事情。我得到了解决方案中所有 feature.xml 文件中每个 XML 节点的列表。
我尝试了诸如“//Feature”和“Feature”之类的XPath 表达式,但都没有得到任何结果。
在我看来,我的 XPath 表达式是正确的,但是 select-xml 的行为有点令人困惑。有人知道为什么会这样吗?
【问题讨论】:
-
如果您的“feature.xml”遵循this 文档,您应该使用绑定到命名空间URI
http://schemas.microsoft.com/sharepoint/的前缀进行该QName 测试。否则://*[local-name()='Feature'] -
@Alejandro:特性 xml 只是有一个属性 xmlns="schemas.microsoft.com/sharepoint"。我不是专家,但这不是设置默认命名空间吗?我想如果设置了默认命名空间,XPath 就不需要额外的规范了。
-
没有。这是一个常见问题解答:没有前缀的 QName 测试选择 null(或空)命名空间 URI 下的元素。
标签: xml sharepoint powershell select-xml