2011-10-12 14 views
6

का उपयोग करते हुए xml को पार्स करते समय हाइफेनेटेड विशेषता नाम (उदा। मॉडल_नाम) को कैसे पढ़ा जाए, मैं ग्रोवी में XmlSlurper का उपयोग करके XML को पार्स करते समय एक विशेषता को पढ़ने की कोशिश कर रहा हूं। जब मैं हाइफेनेटेड विशेषता model-number पढ़ने की कोशिश करता हूं तो मुझे अपवाद मिल रहा है।XmlSlurper

<router name="b" id="x" manufacturer-id="e" model-number="a"/> 

उत्तर

3

Groovy documentation on XMLSlurper से:

यदि आपका तत्वों डैश के रूप में वर्ण हो, आप दोहरे उद्धरण में तत्व नाम संलग्न कर सकते हैं।

उदाहरण:

def myXML = '<router name="b" id="x" manufacturer-id="e" model-number="a"/>' 
def router = new XmlSlurper().parseText(myXML) 
def attr = [email protected]"model-number".text() 

परीक्षण किया गया है और मेरे लिए काम किया।

+0

यह मेरे लिए काम किया .... बहुत बहुत धन्यवाद मैं उद्धरणों का उपयोग करने की कोशिश की, लेकिन याद किया @। –

1

आप चर का उपयोग करके हाइफेनेटेड (और गैर-हाइफेनेटेड) विशेषताओं को भी संभाल सकते हैं, जो कि अज्ञात या असंगत विशेषताओं (जैसे, शायद, सबमिट किए गए वेब रूपों) के साथ एक्सएमएल की जेनेरिक प्रोसेसिंग में उपयोगी होता है।

यहाँ आप एक उदाहरण है कि XML में विशेषताओं, सब के माध्यम से लूप है कि क्या वे एक hypen या नहीं की परवाह किए बिना देख सकते हैं:

def xml = "<router name='b' id='x' manufacturer-id='e' model-number='a'/>" 
def router = new XmlSlurper().parseText(xml) 
for (String attrib : router.attributes().keySet()) { 
    value = [email protected]"$attrib".text() 
    println("${attrib}=${value}") 
} 
संबंधित मुद्दे