10

我正在尝试select-xml从 SharePoint 解决方案中根除一些东西。我有一个包含许多功能的解决方案目录,而不是打开每个feature.xml并手动选择功能名称并将它们放入列表中,我希望使用powershelland进行等效操作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 的行为有点令人困惑。有谁知道为什么会发生这种情况?

4

2 回答 2

8

也许问题出在 xml 命名空间上。尝试使用-namespace来获取正确的 xpath 查询。

通过从 feature.xml 文件中删除 xmlns 并运行您的命令来测试这一点。

于 2010-11-29T23:28:18.787 回答
8

甚至必须为 Select-Xml 指定“默认”命名空间,例如:

$ns = @{dns = 'http://schemas.microsoft.com/sharepoint/'}
ls . -r feature.xml | Select-Xml '//dns:Feature' -Namespace $ns
于 2010-11-30T14:36:56.373 回答