c# - 选择最后一个 XML 节点

标签 c# xml

我有这个 XML 代码:

<AriaGostarInformation>
  <MenuInformation>
    <MenuNames Name="0" href="default.aspx">home</MenuNames>
    <SubMenuNames parentName="1">
      fgfgfgfgs
    </SubMenuNames>
    <SubMenuNames parentName="3">
    </SubMenuNames>
  </MenuInformation>
  <SliderInformation>
    <SliderImageAddress>..\..\Img\Hydrangeas.jpg,</SliderImageAddress>
    <SliderImageAddress>..\..\Img\Jellyfish.jpg,</SliderImageAddress>
    <SliderImageAddress>..\..\Img\Koala.jpg,</SliderImageAddress>
    <SliderImageAddress>..\..\Img\Lighthouse.jpg,</SliderImageAddress>
    <SliderImageAddress>..\..\Img\Penguins.jpg,</SliderImageAddress>
    <SliderImageAddress>..\..\Img\Tulips.jpg,</SliderImageAddress>
  </SliderInformation>
  <LastProductInformation>
    <Product Name="147">
      <Subject>
      </Subject>
      <ProductImageAddress>http://localhost:1209/ckeditor/plugins/imagebrowser/browser/Hydrangeas.jpg</ProductImageAddress>
      <ProductDes>
        &lt;p&gt;&lt;span style="color:#FFA07A;"&gt;qwqweqweqe&lt;/span&gt;qwe&lt;/p&gt;
        &lt;p&gt;&lt;span style="font-size:11px;"&gt;qweqweqw&lt;/span&gt;e&lt;/p&gt;
      </ProductDes>
    </Product>
    <Product Name="dsa">
      <Subject>salm</Subject>
      <ProductImageAddress>http://localhost:1209/ckeditor/plugins/imagebrowser/browser/Hydrangeas.jpg</ProductImageAddress>
      <ProductDes>
        &lt;p&gt;sdADASDASDASDASDASDASD&lt;/p&gt;

        &lt;p&gt;ASDASDASDADASDASDASDASDA&lt;/p&gt;

        &lt;p&gt;ASDASDASDASDASDASDASDASDASD&lt;/p&gt;
      </ProductDes>
    </Product>
  </LastProductInformation>
</AriaGostarInformation>   

我想在 LastProductInformation 中选择最后一个 product 节点并获取该节点的属性。 我的代码是:

XmlDocument xdoc = new XmlDocument();
xdoc.Load(AppDomain.CurrentDomain.BaseDirectory + @"\static\css\xml\data.xml");
XmlNode xparent = xdoc.SelectSingleNode("//LastProductInformation");
var b = xparent.SelectSingleNode("/Product[last()]").Attributes["Name"].Value;

但这返回空值。我该怎么办?

最佳答案

使用 LINQ to XML

var value = XDocument.Load("path")
                      .Descendants("Product")
                      .Last()
                      .Attribute("Name").Value;

您还可以将 XPathLINQ to XML 一起使用

var value = XDocument.Load("path")
             .XPathSelectElement("//LastProductInformation/Product[last()]")
             .Attribute("Name").Value;

注意:确保您从项目中引用了 System.Xml.Linq 命名空间。

关于c# - 选择最后一个 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21548549/

相关文章:

c# - 从运行时加载的XSD创建有效的XML(无xsd.exe)

c# - 'yield return' 比 "old school"返回慢吗?

c# - .NET Web 服务 - 如何返回错误?

android - Logback.xml 保存日志的相对文件路径

javascript - 无法在android中登录webview

xml - 如何在 OpenERP 中展开和折叠菜单?

c# - 如何使用c#检查硬盘是Sata设备还是IDE设备

c# - 让客户端使用包含私钥的证书有什么区别?

c# - Service Stack 的 DTO 模式真的有用吗?

android - XML 中的 TextInputEditText requestFocus 导致呈现问题