Trong LINQ to XML nó rất dễ dàng:
XDocument doc = XDocument.Load("test.xml"); // Or whatever
var allElements = doc.Descendants();
Vì vậy, để tìm thấy tất cả các yếu tố với một thuộc tính đặc biệt, ví dụ:
var matchingElements = doc.Descendants()
.Where(x => x.Attribute("foo") != null);
Giả sử bạn muốn tất cả các thành phần . Nếu bạn muốn tất cả các nút (bao gồm các nút văn bản v.v., nhưng không phải là bao gồm các thuộc tính dưới dạng các nút riêng biệt), bạn sẽ sử dụng DescendantNodes()
để thay thế.
CHỈNH SỬA: Không gian tên trong LINQ to XML là tốt đẹp. Bạn muốn sử dụng:
var matchingElements = doc.Descendants()
.Where(x => x.Attribute(XNamespace.Xmlns + "aml") != null);
hoặc cho một không gian tên khác nhau:
XNamespace ns = "http://some.namespace.uri";
var matchingElements = doc.Descendants()
.Where(x => x.Attribute(ns + "foo") != null);
Nguồn
2011-09-19 07:16:11
Nếu bạn cần phải kiểm tra các thuộc tính nhất định, bạn không cần phải đi qua _every node_ (nút văn bản, nút văn bản, nút bình luận). Chỉ cần đi qua từng nút phần tử hoặc mỗi nút thuộc tính (nghĩa là với LINQ hoặc XSLT). Các nút phần tử là loại nút duy nhất có các thuộc tính. – Abel
Tài liệu này lớn đến mức nào? Tức là nó sẽ được tối ưu hóa giá trị? –
Xem các liên kết [http://forums.asp.net/t/1285409.aspx/1](http://forums.asp.net/t/1285409.aspx/1) [http: //www.developerfusion .com/article/4078/reading-storage-and-transforming-xml-data-in-net/5 /] (http://www.developerfusion.com/article/4078/reading-storing-and-transforming-xml -data-in-net/5 /) [http://weblogs.asp.net/karan/archive/2010/04/29/parse-an-xml-file.aspx](http://weblogs.asp. net/karan/archive/2010/04/29/parse-an-xml-file.aspx) – Prasanth