2017-03-27 31 views
-1

我有一個看起來像這樣的XML文件:C#:如何解析給定的XML並獲取屬性值?

<Create> 
    <Test Id="01" Marks="40" Rank="4"/> 
    <Test Id="02" Marks="60" Rank="5"/> 
    <Test Id="03" Marks="80" Rank="2"/> 
</Create> 

現在我想讀的IdMarksRank屬性值。
那麼對應的C#代碼看起來像獲得那些屬性值?

+1

你好,歡迎堆棧溢出。請更新您的問題,讓我們知道您已經嘗試過的內容,並提供您可能遇到的任何代碼。如果包含儘可能詳細的信息,您可能會得到更好的答案。 –

+0

我改進了代碼格式,問題和標題。並添加了一個標籤。 – zx485

回答

0

您可以使用XmlDocument和XPath的組合。

在第1行上,字符串被轉換爲轉義引號。然後XMLDocument類被實例化,LoadXml方法被用來加載字符串。這可以通過使用xml.Load([path to file])來改變加載文件。

加載文檔後,可以使用「創建/測試」xpath選擇測試元素。最後,我們遍歷每個節點並輸出所需的數據。 我已經在c#控制檯應用程序中完成了這項工作,並省略了樣板。

var xmlString = "<Create><Test Id=\"01\" Marks=\"40\" Rank=\"4\"/><Test Id=\"02\" Marks=\"60\" Rank=\"5\"/><Test Id=\"03\" Marks=\"80\" Rank=\"2\"/></Create>"; 
var xml = new XmlDocument(); 
xml.LoadXml(xmlString); 
var nodes = xml.SelectNodes("Create/Test"); 
foreach (XmlNode node in nodes) 
{ 
    Console.WriteLine(string.Format("Id: {0}; Marks: {1}; Rank: {2}", node.Attributes["Id"].Value, node.Attributes["Marks"].Value, node.Attributes["Rank"].Value)); 
} 

W3C學校有一個XPath教程,可以在這裏找到:https://www.w3schools.com/xml/xpath_intro.asp

XMLDocument類文件可以在這裏找到:https://msdn.microsoft.com/en-us/library/system.xml.xmldocument(v=vs.110).aspx

+0

嗨,謝謝你的回答。我能夠使用Xmlreader訪問第一個節點並使用Object.Movetonextattribute()函數我甚至遍歷了屬性的值,但現在我被卡住了,我將如何移動到下一個節點並訪問其他節點屬性。 – Goyal

+0

看看http://stackoverflow.com/questions/2441673/reading-xml-with-xmlreader-in-c-sharp。它有一個很好的例子,對這個鏈接非常感謝 – Gun

+0

,它確實有幫助。 – Goyal