C#获取到OuterXML如下元素信息,要取出数据
<?xml version="1.0"?>
-<device>
<info id="1" name="Digital Machine1" state="inStore"/>
<info id="2 name="Digital Machine2" state="inStore"/>
</device>
C#获取到OuterXML如下元素信息,要取出数据
<?xml version="1.0"?>
-<device>
<info id="1" name="Digital Machine1" state="inStore"/>
<info id="2 name="Digital Machine2" state="inStore"/>
</device>
使用 System.Xml
命名空间中的 XmlDocument
类来加载和遍历XML数据。
using System;
using System.Xml;
class Program
{
static void Main()
{
string xml = @"
<?xml version=""1.0""?>
<device>
<info id=""1"" name=""Digital Machine1"" state=""inStore""/>
<info id=""2"" name=""Digital Machine2"" state=""inStore""/>
</device>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml); // 加载XML字符串
XmlNode rootNode = doc.DocumentElement; // 获取根节点 <device>
if (rootNode.Name == "device")
{
XmlNodeList infoNodes = rootNode.SelectNodes("info"); // 获取所有的 <info> 节点
foreach (XmlNode infoNode in infoNodes)
{
if (infoNode.NodeType == XmlNodeType.Element) // 确保是元素节点
{
string id = infoNode.Attributes["id"]?.Value; // 获取id属性值,注意空值处理
string name = infoNode.Attributes["name"]?.Value; // 获取name属性值
string state = infoNode.Attributes["state"]?.Value; // 获取state属性值
Console.WriteLine($"ID: {id}, Name: {name}, State: {state}"); // 输出属性值
}
}
}
else
{
Console.WriteLine("The root node is not <device>");
}
}
}
首先创建了一个 XmlDocument
对象,并使用 LoadXml
方法加载了XML字符串。然后获取了根节点 <device>
,并使用 SelectNodes
方法选择了所有的 <info>
子节点。在遍历这些 <info>
节点时,使用 Attributes
集合访问了每个节点的属性(id
、name
和 state
),并输出了它们的值。