2012-05-09 58 views
6

我正在使用c#中的XmlElement。我有一個XmlElementXmlElement的來源看起來像下面的示例。如何使用XMlElement獲取元素屬性的值

樣品:

<data> 
    <p>hello all 
     <strong> 
      <a id="ID1" href="#" name="ZZZ">Name</a> 
     </strong> 
    </p> 
    <a id="ID2" href="#" name="ABC">Address</a> 
</data> 

我要遍歷上面的XML來搜索元素名稱a。我也想把這個元素的ID提取到一個變量中。

基本上我想獲得元素<a>的ID屬性。它可能會作爲一個子元素或作爲一個單獨的父級出現。

任何人都可以幫助它如何完成。

+0

也許在這裏同樣的問題http://stackoverflow.com/questions/1216669/issue-to-get-specific-xml-element-value-using-c-sharp – chanhle

+1

你解析真正的XML還是HTML?你試過什麼了? – SimonC

+0

我解析真正的XML – Patan

回答

4

由於您使用C#4.0,你可以使用LINQ到XML是這樣的:

XDocument xdoc = XDocument.Load(@"C:\Tmp\your-xml-file.xml"); 
foreach (var item in xdoc.Descendants("a")) 
{ 
    Console.WriteLine(item.Attribute("id").Value); 
} 

應該給你的元素a無論它是在層次中。


從您的評論,對於只使用XmlDocument的和的XmlElement類代碼等效代碼如下:

XmlDocument dd = new XmlDocument(); 
dd.Load(@"C:\Tmp\test.xml"); 
XmlElement theElem = ((XmlElement)dd.GetElementsByTagName("data")[0]); 
//   ^^ this is your target element 
foreach (XmlElement item in theElem.GetElementsByTagName("a"))//get the <a> 
{ 
    Console.WriteLine(item.Attributes["id"].Value);//get their attributes 
} 
+0

我的應用程序僅支持僅XmlElement對象。你能相應地編輯你的答案嗎? – Patan

+0

@ User222我更新了我的答案。 – gideon

+0

謝謝你的答案 – Patan