在XmlNode数组中按名称查找值

问题描述 投票:0回答:2

我有以下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>

我正在XmlNode[]中获得此XML,我需要按名称提供所有属性,我已经尝试过以下操作:

      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个Property元素,所以我不想在这里使用foreach

c# asp.net arrays xml xmlnode
2个回答
1
投票

您可以轻松地使用Xml.Linq进行操作,将xml解析为XDocument,然后遍历XDocument后代并获得第一个元素的值,该元素的Root属性等于attachments


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.