Groovy有一點xml解析問題。
這是,我的數據是什麼樣子:Groovy:創建一個新的xml結構以及如何在構建時插入新節點
ID 001=1234
sID 001=q8b6v
d1 001=some Text
d2 001=more Text2
tzh 001=data
dse 001=data
ID 001=567823
sID 001=l3n37v2
d1 001=some Text
d2 001=more Text2
hrg 001=data
dfe 001=data
...
我需要的ID,SID和D1。
我得到什麼:
What I get:
<add>
<doc>
<field name='ID'>00573419</field>
<field name='sID'>20120110572</field>
<field name='d1'>some Text</field>
<field name='ID'>00573406</field>
<field name='sID'>20120111110</field>
<field name='d1'>some Text2</field>
</doc>
</add>
我想要什麼:
<add>
<doc>
<field name='ID'>00573419</field>
<field name='sID'>20120110572</field>
<field name='d1'>some Text</field>
</doc>
<doc>
<field name='ID'>00573406</field>
<field name='sID'>20120111110</field>
<field name='d1'>some Text2</field>
</doc>
</add>
這是我的代碼部分:
if(!dataFile.exists()){
println "File does not exist!"
}else{
def key1, key2, key3, key4
def val1, val2, val3, val4
xml.add{
doc {
dataFile.eachLine {line ->
if(line.startsWith(regExId)){
(key1, val1) = line.split(/001=/).collect {it.trim()}
field(name:key1, val1)
}
if(line.startsWith(regExEntryId)){
(key2, val2) = line.split(/001=/).collect {it.trim()}
field(name:key2, val2)
}
if(line.startsWith(regExTitle)){
(key3, val3) = line.split(/001=/).collect {it.trim()}
field(name:key3, val3)
}
}
}
}
我想保持儘可能簡單。所以我需要的是'如果這裏開始一個新的regExId然後開始一個新的xml-block',這樣我可以根據需要輕鬆地添加新的數據部分(如d2)。沒有現有的xml文件。
感謝您的任何信息!
您的數據''
在每一行的結束? – 2012-04-12 14:12:27
我現在看到了......不,它在每行的末尾沒有
? – Dave 2012-04-12 14:15:02
編輯該部分,謝謝。現在應該是正確的。 – Dave 2012-04-12 14:16:27