2016-05-16 109 views
1

我在C#中使用XmlDocument,我想知道如何获取根的孙子数据?在c中使用xml文件获取孙子文本#

<tRoot> 
    <One> 
    <a>15</a> 
    <b>11</b> 
    <c>1</c> 
    <d>11.35</d> 
    <e>0</e> 
    <f>289</f> 
</One> 
<Two> 
    <a>0</a> 
    <b>11</b> 
    <c>1</c> 
    <d>0.28</d> 
    <e>0</e> 
    <f>464</f> 
</Two> 
</tRoot> 

,我想获得的一个和能力也有两个

我想:

var doc = new XmlDocument(); 
doc.Load(Consts.FileConst); 
var docXml = doc["One"]; 
if (docXml != null) 
{ 
    float valFromXml = float.Parse(docXml["a"].InnerText); 
} 

问题是docXml为空

任何assitance?

+0

你尝试过通过迭代的孩子和你在哪里卡住了?请包含您的代码。是否有任何理由使用旧的'XmlDocument' API而不是更好的'XDocument'? –

+0

@CharlesMager我编辑了我的问题 – Programmer

回答

1

正如上文所述,的XDocument将是一个更好的选择。但是,如果你仍想使用XmlDocument的,你可以使用

var doc = new XmlDocument(); 
doc.Load(Consts.FileConst); 
foreach(XmlNode xmlNode in doc.DocumentElement.ChildNodes) { 
    //access a/b/c/d/e using:   
    xmlNode.ChildNodes[0].InnerText; //for a 
    xmlNode.ChildNodes[1].InnerText; //for b 
} 
+0

我还想要“一个”节点的“a”个孩子的数据。看到我编辑的问题。 – Programmer

+0

@Programmer,你可以给我一个你提供的xml文件的示例输出。 – Ash

+0

我已经在我的问题中给出了它 – Programmer

1

试试这个:

XmlDocument d = new XmlDocument(); 
d.LoadXml("<tRoot><One><a>15</a><b>11</b><c>1</c><d>11.35</d><e>0</e><f>289</f></One><Two><a>0</a><b>11</b><c>1</c><d>0.28</d><e>0</e><f>464</f></Two></tRoot>"); 
XmlNodeList itemNodes = d.SelectNodes("//*/a"); 
+0

看到我编辑的问题 – Programmer

+0

运行我提供的代码,并在设置itemsNodes集合后打破调试器。它将包含您需要的两个'a'元素。它们的值在每个的InnerText属性中。 –