GPath में इस XPath //div[@id='foo']
का विकल्प क्या है? आम तौर पर, मुझे यह दस्तावेज कहां मिल सकता है?GPath में विशेषता मान द्वारा तत्व कैसे ढूंढें?
उत्तर
यहाँ इसी टुकड़ा है:
def node = new XmlSlurper().parseText(...)
def foo = node.depthFirst().findAll { it.name() == 'div' && [email protected] == 'foo'}
कुछ अन्य लिंक आप पढ़ना चाहते हैं हो सकता है:
पिछले पोस्टर आप सभी को दे दिया यह आवश्यक है: आपके दस्तावेज़ को मानना बंद कर दिया गया है xml
, आप
def foo = xml.path.to.div.find{[email protected] == 'foo'}
एक परिणाम खोजने के लिए चाहते हैं। या सभी परिणाम खोजने के लिए findAll
।
'XP' में XPath का अर्थ है कि मुझे सही पथ नहीं पता 'div' – yegor256
ठीक है। तो पिछले पोस्टर ने आपको समाधान दिया: - 'xml.depthFirst() का उपयोग करें। {it.name() ==' div '&& id। @ id ==' foo} ' – winstaan74
@ winstaan74 सभी को प्राप्त करने की अभिव्यक्ति क्या है एक विशिष्ट विशेषता नाम वाले तत्व? – raffian
क्या आप की जरूरत यह है:
def root = new XmlSlurper().parseText(<locOfXmlFileYouAreParsing>.toURL().text)
def foundNode = root.'**'.find{ [email protected] == "foo" }
अपने डबल * यदि आप पथ जानने के बिना इसे खोजने देंगे। कम से कम यह मैं यह कैसे करता हूं।
तत्व नाम से नोड का पहला उदाहरण आपको कैसे मिलता है, मानते हैं कि एक से अधिक है? – raffian
'xml। '**'। {It.name() == 'elementName'}' और यह पहला होगा। –
की नकल करने के लिए अभिव्यक्ति // div [@ id = 'foo'] निकटतम बात आप एक GPath के साथ कर सकते है:
def xml = new XmlParser().parseText(text)
xml.'**'.div.findAll { [email protected]=="foo" }
'**' काफी 'के रूप में एक ही है// 'अपने XPath में।
xml.'**'.div
किसी भी स्तर पर टाइप div के सभी नोड्स उत्पन्न करेगा।
बाद में दिए गए बंद के साथ findAll साथ छानने() आप नोड्स की एक सूची प्राप्त के रूप में आप XPath मामले
यह ग्रूवी, GPath नहीं है में है। मुझे एक जीपीएथ अभिव्यक्ति की आवश्यकता है। – yegor256
यह भी सुनिश्चित नहीं है कि आपका क्या मतलब है, क्योंकि GPath अधिकतर अतिरिक्त प्रतीकों के साथ ग्रोवी सिंटैक्स का उपयोग कर रहा है: ".." जो माता-पिता "*" देता है जो सभी बच्चों को "**" देता है जो गहराई के रूप में कार्य करता है पहला लूप "@" जिसका उपयोग सामान्य नोड एक्सेसर को किसी संपत्ति तक पहुंचने के लिए किया जाता है। –
मैं कुछ ढूंढ रहा हूं जैसे कि "..div {it। @ Id == 'foo'}" ', लेकिन यह काम नहीं कर रहा है .. – yegor256