2010-03-17 7 views
5

मैं जावा में xpath का उपयोग कर रहा हूं। मैं किसी तत्व के सभी गुण (नाम & मान) प्राप्त करना चाहता हूं। मुझे एक तत्व के गुण मान प्राप्त करने के लिए क्वेरी मिली, अब मैं एकल क्वेरी में अकेले विशेषता नाम या नाम और मान प्राप्त करना चाहता हूं।एक्सपैथ - तत्व के सभी गुण नाम और मान कैसे प्राप्त करें

<Element1 ID="a123" attr1="value1" attr2="value2" attr3="value3" attr4="value4" attr5="value5" /> 
यहाँ

निम्न क्वेरी का उपयोग कर इस प्रारूप //*/@* का उपयोग करते हुए मैं मान प्राप्त कर सकते Element1 XmlUtils.getAttributes(Path, String.format("//*/@*")); के सभी विशेषता मान प्राप्त करने के लिए। परिणाम value1 value2 value3 value4 value5 a123

अब मैं सभी विशेषता नाम और मूल्य प्राप्त करने के लिए सभी विशेषता नाम, या क्वेरी प्राप्त करने के लिए क्वेरी जानना चाहता हूं।

उत्तर

22

एलिमेंट 1: //Element1/@* नामक दस्तावेज़ में सभी तत्वों के सभी विशेषताओं का चयन करने के लिए। यह नोडसेट वापस विशेषता नोड्स लौटाएगा। फिर आप नोडसेट को फिर से चालू कर सकते हैं।

यदि आपके पास पहले से ही एक संदर्भ नोड है और इसके तहत परिणाम खोजना चाहते हैं, तो क्वेरी .//Element1/@* होगी। यह पूरे दस्तावेज़ की पूछताछ से आमतौर पर अधिक कुशल है।

// input is an InputSource or a DOM node 
NodeList nl = (NodeList) xpath.evaluate("//Element1/@*", input, XPathConstants.NODESET); 
int length = nl.getLength(); 
for(int i=0; i<length; i++) { 
    Attr attr = (Attr) nl.item(i); 
    String name = attr.getName(); 
    String value = attr.getValue(); 
} 

और यह अधिक किसी दिए गए नाम getElementsByTagName का उपयोग कर के सभी तत्वों को खोजने के लिए कुशल हो सकता है।

NodeList nl = document.getElementsByTagName("Element1"); 

एक विशेष तत्व की विशेषताओं के लिए, उसकी विशेषताओं पुनरावृति संपत्ति।

NamedNodeMap nl = element.getAttributes(); 
int length = nl.getLength(); 
for(int i=0; i<length; i++) { 
    Attr attr = (Attr) nl.item(i); 
    String name = attr.getName(); 
    String value = attr.getValue(); 
} 
+0

महान ans! मैं इसके लिए बिल्कुल देख रहा था! धन्यवाद! (बीटीडब्ल्यू ... एक टाइपो है, यह स्ट्रिंग है, स्ट्रिंग नहीं) –

1

मैं Oracle सेवा बस में यह करने के लिए किया था और केवल xPath एक कैश कुंजी और समाधान है कि मेरे लिए काम बनाने के लिए उपयोग कर रहा करना पड़ा था:

concat(
    string-join(//*[string-length(normalize-space(string-join(text(), ''))) > 0]/concat(local-name(), 
                         ':', 
                         normalize-space(string-join(text(), ''))), '_'), 
    '_', 
    string-join(//@*[normalize-space(.) != '']/concat(name(), ':', .), '_') 
) 
संबंधित मुद्दे