例子说明
循环遍历xml文件中的信息包括:节点名称(一个),节点的串联值(一个),节点的属性(多个)
Xml文件
<?xml version="1.0" encoding="utf-8" ?>
<Computers>
<Computer ID="11111111" Description="Made in China">
<name>Lenovo</name>
<price>5000</price>
</Computer>
<Computer ID="2222222" Description="Made in USA">
<name>IBM</name>
<price>10000</price>
</Computer>
</Computers>
C#嵌套循环代码
private static void optimizeGetXMLInformation1(string xmlFilePath)
{
try
{
//初始话一个XMl实例
XmlDocument myXmlDoc = new XmlDocument();
//加载XMl文件(xmlFilePath:为XMl的路径)
myXmlDoc.Load(xmlFilePath);
//获取节点中的第一个子节点
var rootNodeChild = myXmlDoc.FirstChild;
if(rootNodeChild != null){
GetNodeInformation(rootNodeChild);
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
private static void GetNodeInformation(XmlNode xmlNode)
{
while (xmlNode != null)
{
//输出节点名称及串联值
Console.WriteLine($"节点:{xmlNode.Name} = {xmlNode.InnerText}");
//获得该节点的属性集合
XmlAttributeCollection xmlNodeattributeCol = xmlNode.Attributes;
if (xmlNodeattributeCol != null)
{
foreach (XmlAttribute attri in xmlNodeattributeCol)
{
//输出节点包含的属性名称与属性值
Console.WriteLine($"属性:{attri.Name} = {attri.Value}");
}
}
//获取该节点的第一个子节点
var xmlNodeChild = xmlNode.FirstChild;
//判断节点的子节点是否存在,第一个子节点都不存在的话,那说明该节点没有子节点
if (xmlNodeChild != null)
{
//子节点存在就集训循环输出该节点的信息
GetNodeInformation(xmlNodeChild);
}
//节点循环到下一个节点
xmlNode = xmlNode.NextSibling;
}
}