繁体   English   中英

在 XmlNode 数组中按名称查找值

[英]Find value by Name in XmlNode Array

我有以下 XML:

<UserArea>
    <Property>
        <NameValue name="amperage" type="StringType">1</NameValue>
    </Property>
    <Property>
        <NameValue name="attachments" type="StringType">2</NameValue>
    </Property>
    <Property>
        <NameValue name="noOfBolts" type="StringType">3</NameValue>
    </Property>
    <Property>
        <NameValue name="boreSize" type="StringType">4</NameValue>
    </Property>
</UserArea>

这个 XML 我在XmlNode[] ,我需要按名称列出的所有属性,我尝试了以下内容:

      var xmlNodeArray = (XmlNode[])item.UserArea; //get xmlNode Array 
      var attachments = xmlNodeArray.FirstOrDefault(x => x.Name == "attachments")?.InnerText; //Not working, always returning null value
      foreach (var xmlNode in xmlNodeArray)
      {
           var val = xmlNode["attachments"]?.InnerText; // Not working
           var data = xmlNode.InnerText; // working but need to looping
      }

我有大约 250 个属性元素,所以我不想在这里使用foreach

您可以使用Xml.Linq轻松完成。 将您的 xml 解析为XDocument ,然后通过Root后代并获取第一个元素的值,其name属性等于附件

var document = XDocument.Parse(xml);
var result =
    document.Root?.Descendants()
        .FirstOrDefault(e => e.HasAttributes && e.Attribute("name")?.Value == "attachments")?.Value ??
        string.Empty;

您始终可以使用 XPath 选择节点

XmlNodeList nodes = userAreaNode.SelectNodes("//Property/NameValue[@name='attachments']");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM