Powershell:[xml]。SelectNodes不';是否返回预期结果?

Powershell:[xml]。SelectNodes不';是否返回预期结果?,xml,powershell,selectnodes,Xml,Powershell,Selectnodes,我正在使用powershell解析一个C#项目文件,这是一个标准xml文件: <?xml version="1.0" encoding="utf-8"?> <Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0"> <PropertyGroup> <ProjectTyp

我正在使用powershell解析一个C#项目文件,这是一个标准xml文件:

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
    <PropertyGroup>
        <ProjectType>Local</ProjectType>
    </PropertyGroup>
    <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
        <CodeAnalysisRules>-Microsoft.Design#CA2210;Microsoft</CodeAnalysisRules>
        <PlatformTarget>AnyCPU</PlatformTarget>
    </PropertyGroup>
</Project>
我本想把绳子放进去,但事实上我得到了:

Parsing d:\m.xml

xmlns
xml
Any
0
我的计划或设想有什么问题吗? 谢谢

您的XML具有在文档元素级别声明的默认名称空间。请注意,除非另有规定,否则子代元素隐式继承祖先默认名称空间。这意味着,您要选择的
CodeAnalysisRules
元素位于默认名称空间中,这就是为什么您需要使用注册前缀
Any
来选择元素,如注释中所述:

$nodes = $xml.SelectNodes("//Any:CodeAnalysisRules",$ns)
$xml.SelectNodes(“//Any:CodeAnalysisRules”,$ns)
$nodes = $xml.SelectNodes("//Any:CodeAnalysisRules",$ns)