2016-07-18 2 views
0

У меня возникают проблемы с пространством имен с gpath.Groovy gpath не работает при использовании с префиксом xml-тегов

String record = ''' 
    <u:record> 
     <u:controlfield tag="001">017003167</u:controlfield> 
     <u:datafield ind2="" ind1="" tag="Tag_1234"> 
      <u:subfield code="a">Peter</u:subfield> 
      <u:subfield code="b">10</u:subfield> 
     </u:datafield> 
     <u:datafield ind2="" ind1="" tag="Tag_1234"> 
      <u:subfield code="a">Simon</u:subfield> 
      <u:subfield code="b">20</u:subfield> 
     </u:datafield> 
     <u:datafield ind2="" ind1="" tag="Tag_20"> 
      <u:subfield code="a">Simon</u:subfield> 
      <u:subfield code="b">20</u:subfield> 
     </u:datafield>   
    </u:record> 
    ''' 

GPathResult studentRecord = new XmlSlurper(false, false).parseText(record) 
GPathResult filteredRecord = studentRecord.datafield.findAll { it.'@tag' == 'Tag_1234' } 

println "filteredRecord: ${filteredRecord}\n" 
println "filteredRecord size is ${filteredRecord.size()}\n" 

Выходной сигнал 0. Не знаете, почему это так. Если я удалю префикс xml «u:», то gpath работает нормально. Может кто-нибудь, пожалуйста, скажите мне, где я иду не так.

+0

что такое "recordWithPrefixXml? –

+0

Его опечатка - я исправил xml сейчас. – user292049

ответ

1

Попробуйте это:

def studentRecord = new XmlSlurper(false, false).parseText(record) 
def filteredRecord = studentRecord.'u:datafield'.findAll { it.'@tag' == 'Tag_1234' } 
+0

Это сработало! Спасибо за помощь - очень ценю ... – user292049

Смежные вопросы