关于C#读取Xml中节点的方法

.Net技术 码拜 5年前 (2016-04-29) 698次浏览
-<root>
-<节点1>
-<节点2>
-<节点3>
-<节点4>
-<节点5>
节点1和节点3同级,节点2和节点4同级,节点5是节点4的子节点,这种情况下怎么读取这个xml的文件内容呢?
本人先:
XmlElement xmlRoot = xmlDoc.DocumentElement;
TreeNode root = new TreeNode(xmlRoot.Attributes[0].Value + ” ” + xmlRoot.Attributes[1].Value);
treeView1.Nodes.Add(root);本人这个父节点建好了
可是这个只是读取了节点1的内容,本人节点3莫非也要建个父节点吗?
解决方案

10

1:得到根节点root
2.从root去获取node1或node3
3.从node1去获取node2
假如你的节点名字不重复,可以用selectedSingleNode这个方法来获取节点,返回的又是一个xmlNode,这样不断的找下去,总能找到你要找的节点,前提是你要清楚你要找的node在哪个分支上

10

引用:

谢谢楼上,本人是想把这个xml文件里的信息全部读取出来并显示,然后本人假如想要把这五个节点及节点内的属性都读取到的话,具体的语句该怎么写?

假如不针对某个节点,不论名字,仅仅是无差别的全输出的话,你需要用递归的方式来解析这个root
1、还是获取根节点root
2、获取root的全部childNode(有这个属性)
3、对每个childNode判定,假如NodeType==Text,到头了;假如NodeType==Element,获取全部attribute,然后把该childnode当初root重复步骤2
本人用到过的NodeType只有Text和Element,假如还有其他的类型,请本人看着办哦

15

lz看下 这段代码,以前本人就是这么解析的,本人那个xml格式 是 一层套一层的那种,就相似于 爷爷 =》爸爸 =》儿子=》 孙子 这样的结构

 XmlNodeList platformNodeList = xmlDoc.SelectNodes("/Platforms/Platform");
           for (int i = 0; i < platformNodeList.Count; i++)
           {
               model = new PlatformModel();
               model.Name = platformNodeList[i].ChildNodes[0].InnerText;
               model.LocalName = platformNodeList[i].ChildNodes[1].InnerText;
               model.Order = platformNodeList[i].ChildNodes[2].InnerText;
               XmlNodeList productLineList = null;
               productLineList = platformNodeList[i].ChildNodes[3].SelectNodes("ProductLine");
               List<ProductLineModel> ProductList = new List<ProductLineModel>();
               ProductLineModel productmodel = null;
               for (int j = 0; j < productLineList.Count; j++)
               {
                   productmodel = new ProductLineModel();
                   productmodel.Name = productLineList[j].ChildNodes[0].InnerText;
                   XmlNodeList ModelsList = null;
                   PModels pmodels = null;
                   ModelsList = productLineList[j].ChildNodes[1].SelectNodes("Model");
                   List<PModels> pmodelsList = new List<PModels>();
                   for (int k = 0; k < ModelsList.Count; k++)
                   {
                       pmodels = new PModels();
                       pmodels.Name = ModelsList[k].ChildNodes[0].InnerText;
                       pmodels.NodeID = ModelsList[k].ChildNodes[1].InnerText;
                       pmodels.ImageUrl = ModelsList[k].ChildNodes[2].InnerText;
                       //string s= ModelsList[k].ChildNodes[3].InnerText;
                       XmlNodeList pllmodels = null;
                       PLMModels PLMModels;
                       pllmodels = ModelsList[k].ChildNodes[3].SelectNodes("PLMModel");
                       List<PLMModels> plMModelsList = new List<PLMModels>();
                       for (int t = 0; t < pllmodels.Count; t++)
                       {
                           PLMModels = new PLMModels();
                           PLMModels.PLMModel = pllmodels[t].InnerText;
                           plMModelsList.Add(PLMModels);
                       }
                       pmodels.PLMModelsList = plMModelsList;
                       pmodelsList.Add(pmodels);
                   }
                   productmodel.PLLMmodelsList = pmodelsList;
                   ProductList.Add(productmodel);
               }
               model.productineList = ProductList;
               list.Add(model);
           }

5

XDocument.Load(filePath).ToString()

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于C#读取Xml中节点的方法
喜欢 (0)
[1034331897@qq.com]
分享 (0)