2012-06-14 39 views
15

Có này (giản thể) XML:Cách chọn nhiều nút ở các cấp độ khác nhau?

<?xml version="1.0" encoding="UTF-8"?> 
<kml> 
<Document> 
     <Placemark> 
      <name>Poly 1</name> 
      <Polygon> 
         <coordinates> 
          -58.40844625779582,-34.60295278618136,0 
         </coordinates> 
      </Polygon> 
     </Placemark> 
     <Placemark> 
      <name>Poly 2</name> 
      <Polygon> 
         <coordinates> 
          -58.40414334150432,-34.59992445476809,0 
         </coordinates> 
      </Polygon> 
     </Placemark> 
</Document> 
</kml> 

Làm thế nào tôi có thể chọn tên và tọa độ của mỗi dấu vị trí? Ngay bây giờ tôi có thể chọn tên của họ bằng biểu thức XPath sau:

//Document//Placemark//name 

Làm cách nào để chọn cả hai mà không có bất kỳ dữ liệu nào khác?

Trả lời

38

Bạn có thể sử dụng liên kết trong biểu thức XPath của mình. Chỉ cần sử dụng các nhà điều hành: |

//Document/Placemark/name | //Document/Placemark/Polygon/coordinates 

Không sử dụng // (hậu duệ trục) nếu bạn không cần phải. Sử dụng //, điều này cũng sẽ hoạt động: //name | //coordinates. Đó là hiệu suất tốt hơn-khôn ngoan để xác định đường dẫn chính xác.

5

Sử dụng:

/*/*/Placemark/name | /*/*/Placemark/*/coordinates 

này quy định các đoàn các kết quả của hai biểu thức XPath riêng biệt - các tiêu chuẩn XPath đoàn điều hành | được sử dụng. Đã chọn là tất cả các phần tử name là con của phần tử Placemark là phần tử của phần tử trên cùng của tài liệu XML, cộng với tất cả các phần tử coordinates là phần tử con của phần tử trên cùng của phần tử Tài liệu XML.

Các phần tử được chọn theo thứ tự tài liệu (mặc dù không có tài liệu W3C quy định nào), có nghĩa là kết quả đánh giá (thường là loại XmlNodeList).

0

Đã giải quyết: // Dấu vị trí/* [tự :: tên hoặc hậu duệ :: tọa độ]

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