![](/img/trans.png)
[英]Linq query on Xdocument returns "System.linq.Enumerable+WhereSelectEnumerableIterator'2[system.XML.Linq.Xelement,System.String]
[英]Query elements in System.Xml.Linq.XElement
C#代码:
List<XElement> ele = reportHost.hostProperties.ToList();
foreach (var item in ele)
{
Console.WriteLine("XML: {0}", item);
}
OUTPUT:
<HostProperties>
<tag name="cpe">cpe:/o:linux:linux_kernel</tag>
<tag name="device">1234567</tag>
<tag name="FQN">BOB-PC</tag>
<tag name="Domain">Internal</tag>
</HostProperties>
如何扩展上面的代码以提取上面的XML输出的值“ BOB-PC”和“ 1234567”?
假设ele
是<HostProperties>
元素的集合。 您可以使用Linq to Xml来检查name
属性的值以获得正确的元素值。 如果要获取空引用,则必须添加其他空检查-因为我不知道xml中是否需要什么。
List<XElement> hostProperties = reportHost.hostProperties.ToList();
// iterate through each <hostProperties> element
foreach (var hp in hostProperties)
{
// all of the <tag> elements
var tags = hp.Element("HostProperties").Elements("tag");
foreach (var tag in tags)
{
// get the attribute with the name of "name"
var tagName = tag.Attribute("name");
// check to make sure a <tag> element exists with a "name" attribute
if (tagName != null)
{
if (tagName.Value == "device")
{
Console.WriteLine($"device: {tag.Value}");
}
else if (tagName.Value == "fqn")
{
Console.WriteLine($"fqn: {tag.Value}");
}
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.