2012-06-14 10 views
15

इस (सरलीकृत) एक्सएमएल होने:विभिन्न स्तरों में एकाधिक नोड्स का चयन कैसे करें?

<?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> 

मैं नाम और प्रत्येक स्थान-चिह्न के निर्देशांक का चयन कैसे कर सकते हैं? अभी मैं निम्नलिखित XPath अभिव्यक्ति के साथ उनके नाम चुन सकते हैं:

//Document//Placemark//name 

कैसे मैं दोनों किसी भी अन्य डेटा के बिना चयन कर सकते हैं?

उत्तर

38

आप अपने XPath अभिव्यक्ति में एक संघ का उपयोग कर सकते हैं। |

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

// (वंशज अक्ष) का उपयोग न करें आप की जरूरत नहीं है, तो: बस ऑपरेटर का उपयोग करें। // का उपयोग करके, यह भी काम करेगा: //name | //coordinates। सटीक पथ निर्दिष्ट करने के लिए यह बेहतर प्रदर्शन-वार है।

5

उपयोग:

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

यह निर्दिष्ट करता है दो अलग-अलग xPath अभिव्यक्ति के परिणामों की संघ - मानक XPath संघ ऑपरेटर | प्रयोग किया जाता है। चयनित सभी name तत्व हैं जो Placemark तत्व के बच्चे हैं जो XML दस्तावेज़ के शीर्ष तत्व, प्लस सभी coordinates तत्व हैं जो Placemark तत्व के भव्य बच्चे हैं जो शीर्ष तत्व का पोते है एक्सएमएल दस्तावेज़।

चयनित तत्वों दस्तावेज़ क्रम में आते हैं, जिसका अर्थ है कि मूल्यांकन के परिणाम में (प्रकार XmlNodeList की आमतौर पर) किसी भी name तत्व सीधे अपने इसी coordinates तत्व के द्वारा पीछा किया जाता है (हालांकि कोई प्रामाणिक W3C दस्तावेज़ क्रम निर्दिष्ट करता है)।

0

हल किया गया: // प्लेमार्क/* [स्वयं :: नाम या वंशज :: निर्देशांक]

संबंधित मुद्दे