[英]Query elements in System.Xml.Linq.XElement
C# code: C#代码:
List<XElement> ele = reportHost.hostProperties.ToList();
foreach (var item in ele)
{
Console.WriteLine("XML: {0}", item);
}
OUTPUT: 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>
How can I expand the code above to extract the values "BOB-PC" and "1234567" for the XML output above? 如何扩展上面的代码以提取上面的XML输出的值“ BOB-PC”和“ 1234567”?
Assuming ele
is a collection of <HostProperties>
elements. 假设
ele
是<HostProperties>
元素的集合。 You can use Linq to Xml to check the value of the name
attribute to get the correct values of the element. 您可以使用Linq to Xml来检查
name
属性的值以获得正确的元素值。 If you are getting null references, you will have to add additional null checks - as I don't know what is required or not in the xml. 如果要获取空引用,则必须添加其他空检查-因为我不知道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.