尝试按名称查找节点。这是我的xml:
<Project>
<ItemGroup>
<Compile Include="..\..\CommonAssemblyInfo.cs">
<Link>Properties\CommonAssemblyInfo.cs</Link>
</Compile>
<Compile Include="Global.asax.cs">
<DependentUpon>Global.asax</DependentUpon>
</Compile>
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\myproject1.csproj">
<Name>Myproject1</Name>
</ProjectReference>
<ProjectReference Include="..\Myproject2.csproj">
<Name>MyProject2</Name>
</ProjectReference>
<ProjectReference Include="..\myproject3.csproj">
<Name>MyProject3</Name>
</ProjectReference>
</ItemGroup>
</Project>
以下是从上面的XML获取所有Name节点的代码:
f = File.open(projectpath)
@doc = Nokogiri::XML(f)
#print f.read
names = @doc.xpath("Name")
print names
f.close
我的代码从XML搜索中得不到任何东西。
答案 0 :(得分:7)
您需要通配符路径构造(//
),否则您只需查看根级别的元素。
names = @doc.xpath("//Name")
也许您正在考虑使用CSS搜索,它会使用您提供的字符串:
names = @doc.css("Name")
或者您可能已经使用search
方法尝试进行有根据的猜测,无论您使用的是CSS还是XPath。在这种情况下它会正常工作:
names = @doc.search("Name")
答案 1 :(得分:0)
names = @doc.xpath("//itemgroup//name")