tóm tắt Exec - bạn muốn:
xml.Elements.Select(function(element) new XElement(element.Name,element.Attributes))
câu trả lời đầu tiên:
XElement.Descendants
, hoặc là nó một câu hỏi lừa? : P There's an example of usage of Descendants here
câu trả lời Revised, nhờ Tormod - một cái gì đó đã cảm thấy sai !:
Elements cung cấp cho hậu duệ trực tiếp, như bạn đang tìm kiếm. Con cháu cung cấp cho hệ thống phân cấp đầy đủ [như bạn đang cáo buộc Elements]. .! (Ví dụ tôi liên kết với làm rõ này Xin lỗi cho sự nhầm lẫn
Vì vậy, cuối cùng, những gì bạn đang tìm kiếm là (thời gian này trong VB):
Dim xml = <Root>
<Parent id="1">
<Child>Thomas</Child>
</Parent>
<Parent id="2">
<Child>Tim</Child>
<Child>Jamie</Child>
</Parent>
</Root>
REM All nodes two levels down in the hierarchy
Dim level2Nodes = xml.Elements.SelectMany(function(element) element.Elements)
level2Nodes.Dump
REM All Child nodes, no matter where they are:
Dim children = xml.Descendants("Child")
Mỗi trong số đó sẽ mang lại bạn 3 `` `yếu tố vì những lý do khác nhau như trình bày trong REMS
(Dán trên trực tiếp vào LINQPad trong chế độ tuyên bố VB)
bây giờ tôi thấy những gì có thể gây nhầm lẫn bạn -. khi bạn sử dụng các yếu tố và tìm kiếm tại nó trong một visualiser, bạn vẫn còn nhìn thấy những đứa trẻ: -
Dim parents = xml.Elements
Nếu bạn chỉ muốn những cái tên thực tế, bạn có thể sử dụng một cái gì đó như:
Dim parentNames = xml.Elements.Select(function(element) element.Name)
Lưu ý rằng trong mỗi trường hợp này, bạn đang nhận được hai kết quả.
Nếu bạn thực sự muốn loại bỏ các trẻ em thất, bạn muốn:
Dim parentElements = xml.Elements.Select(function(element) new XElement(element.Name,element.Attributes))
Bạn có thể mở rộng câu hỏi của bạn để hiển thị những gì bạn đang thực sự tìm kiếm?
Bạn có thể chỉnh sửa trong câu thần chú thực tế mà bạn đã sử dụng không? BTW xin vui lòng tải LINQPAd và thử nó - tuyệt vời của nó để thử nghiệm các công cụ như thế này. Xem các ví dụ tại http://www.dimecasts.net/Casts/ByTag/LinqPad –