2012-05-09 33 views
6

Tôi đang làm việc trên XmlElement trong C#. Tôi có một số XmlElement. Nguồn của XmlElement sẽ trông giống như mẫu bên dưới.cách lấy các giá trị của một thuộc tính của một phần tử bằng cách sử dụng XMlElement

mẫu:

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

tôi phải lặp qua các XML ở trên để tìm kiếm cho tên phần tử a. Tôi cũng muốn trích xuất ID của phần tử đó thành một biến.

Về cơ bản tôi muốn lấy thuộc tính ID của phần tử <a>. Nó có thể xảy ra như một phần tử con hoặc là một phụ huynh riêng biệt.

Bất kỳ ai cũng có thể giúp bạn thực hiện.

+0

có lẽ cùng một câu hỏi ở đây http://stackoverflow.com/questions/1216669/issue-to-get-specific-xml-element-value-using-c-sharp – chanhle

+1

Bạn đang phân tích cú pháp XML thực hay HTML? Bạn đã thử những gì cho đến nay? – SimonC

+0

Tôi đang phân tích cú pháp XML thực – Patan

Trả lời

4

Vì bạn đang sử dụng C# 4.0 bạn có thể sử dụng LINQ-to-xml như thế này:

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

nên cung cấp cho bạn các yếu tố a bất kể nó ở đâu trong hệ thống phân cấp.


Từ nhận xét của bạn, cho mã mà chỉ sử dụng các lớp XmlDocument và XmlElement mã tương đương sẽ là:

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

Ứng dụng của tôi sẽ chỉ hỗ trợ đối tượng XmlElement. Bạn có thể chỉnh sửa câu trả lời cho phù hợp không. – Patan

+0

@ User222 Tôi đã cập nhật câu trả lời của mình. – gideon

+0

cảm ơn bạn đã trả lời – Patan

Các vấn đề liên quan