2016-07-18 8 views
0

gpathにいくつかの名前空間の問題があります。接頭辞付きのXMLタグで使用するとGroovy gpathが動作しない

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

関連する問題