2010-01-22 4 views
10

पार्स करने के लिए आरएसएस ग्रूवी में फ़ीड की कोशिश में, मैं एक GPath उदाहरण के लिए वाइल्डकार्ड का उपयोग कर पाया:ग्रोवी के जीपीएथ अभिव्यक्तियों का पूर्ण वाक्यविन्यास क्या है?

def text = """ 
<data> 
    <common-tables> 
    <table name="address"/> 
    <table name="phone"/> 
    </common-tables> 

    <special-tables> 
    <table name="person"/> 
    </special-tables> 

    <other-tables> 
    <table name="business"/> 
    </other-tables> 
</data> 
""" 

def xml = new XmlParser().parse(new ByteArrayInputStream(text.getBytes())) 
def tables = xml.'**'.table.findAll{ it.parent().name() == 
"special-tables" || it.parent().name 

(http://old.nabble.com/Q:-Avoiding-XPath---using-GPath-td19087210.html से)

यह फैल-डॉट 'ऑपरेटर की एक अजीब उपयोग की तरह दिखता है। मैं आदि ग्रूवी साइट, पुस्तकों पर इस के लिए किसी भी संदर्भ,

कैसे करता है यह काम, और अधिक महत्वपूर्ण बात, आप इस खोज में नहीं मिल सकता है? क्या वहां GPath 'Rosetta Stone' के लिए कोई XPath है?

उत्तर

18

ठीक है, हमेशा की तरह, सबसे अच्छी जगह जानकारी प्राप्त करने के ग्रूवी स्रोत अपने आप में है।
एक पार्सिंग का परिणाम एक groovy.util.slurpersupport.GPathResult वस्तु है।

आप स्रोत (सादा जावा फ़ाइल) को देखें, तो आपको लगता है कि getProperty (स्ट्रिंग) विधि निम्नलिखित विशेष ऑपरेटरों है देखेंगे:

  • ".." कि माता-पिता
  • रिटर्न "*" कि सभी बच्चों को
  • "**" है कि एक गहराई पहले पाश
  • के रूप में कार्य रिटर्न "@" है कि एक संपत्ति
  • सामान्य नोड एक्सेसर उपयोग करने के लिए प्रयोग किया जाता है।

पल के लिए सभी, कोई अन्य जादू कीवर्ड यानी कि।

+0

उत्कृष्ट, धन्यवाद! मैंने स्रोत को देखने की कोशिश की लेकिन मुझे पता नहीं चलेगा कि कहां देखना है। –

3

उन तार के सभी गुण माना जाता है। उनमें से कोई वास्तव में ऑपरेटरों नहीं हैं।

कॉल जो विशेष रूप से उपकरण के जवाब में सूचीबद्ध ऑपरेटरों के लिए जाँच करता है GPathResult#getProperty के माध्यम से रूट किया जाता है।

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