在 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
。
您始终可以 select 使用 XPath 的节点
XmlNodeList nodes = userAreaNode.SelectNodes("//Property/NameValue[@name='attachments']");
您可以使用 Xml.Linq. Parse your xml into XDocument
轻松做到这一点,然后遍历 Root
个后代并获得第一个元素的值,其 name
属性等于 attachments值
var document = XDocument.Parse(xml);
var result =
document.Root?.Descendants()
.FirstOrDefault(e => e.HasAttributes && e.Attribute("name")?.Value == "attachments")?.Value ??
string.Empty;
我有以下 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
。
您始终可以 select 使用 XPath 的节点
XmlNodeList nodes = userAreaNode.SelectNodes("//Property/NameValue[@name='attachments']");
您可以使用 Xml.Linq. Parse your xml into XDocument
轻松做到这一点,然后遍历 Root
个后代并获得第一个元素的值,其 name
属性等于 attachments值
var document = XDocument.Parse(xml);
var result =
document.Root?.Descendants()
.FirstOrDefault(e => e.HasAttributes && e.Attribute("name")?.Value == "attachments")?.Value ??
string.Empty;