2016-05-16 35 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屬性中。 –