-<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莫非也要建个父节点吗?
-<节点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在哪个分支上
2.从root去获取node1或node3
3.从node1去获取node2
假如你的节点名字不重复,可以用selectedSingleNode这个方法来获取节点,返回的又是一个xmlNode,这样不断的找下去,总能找到你要找的节点,前提是你要清楚你要找的node在哪个分支上
10
假如不针对某个节点,不论名字,仅仅是无差别的全输出的话,你需要用递归的方式来解析这个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()