使用Nokogiri按名称查找节点



尝试按名称查找节点。这是我的xml:

<Project>
 <ItemGroup>
    <Compile Include="....CommonAssemblyInfo.cs">
      <Link>PropertiesCommonAssemblyInfo.cs</Link>
    </Compile>
    <Compile Include="Global.asax.cs">
      <DependentUpon>Global.asax</DependentUpon>
    </Compile>
    <Compile Include="PropertiesAssemblyInfo.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搜索中一无所获。

您需要通配符路径构造(//),否则您只需要查看根级别的元素。

names = @doc.xpath("//Name")

也许您正在考虑CSS搜索,它将使用您提供的字符串:

names = @doc.css("Name")

或者,您可能使用了search方法,该方法试图对您使用的是CSS还是XPath进行有根据的猜测。在这种情况下它会正常工作:

names = @doc.search("Name")
names = @doc.xpath("//itemgroup//name")

相关内容

  • 没有找到相关文章

最新更新