[英]Use of Namespaces in Groovy MarkupBuilder
我想要以下輸出:
<?xml version="1.0" encoding="UTF-8"?>
<structure:structuralDataRoot xmlns:register="http://www.test.ch/register/1" xmlns:structure="http://test.ch/structure/1" >
<structure:tester>ZH</structure:tester>
<structure:surveyYear>2001</structure:surveyYear>
<structure:surfaceData>
<structure:houseSurfaceData>
<structure:creationDate>2001-01-01</structure:creationDate>
<structure:localFarmId>
<register:houseIdCategory>token</register:houseIdCategory>
<register:houseId>token</register:houseId>
</structure:localFarmId>
</structure:houseSurfaceData>
</structure>
我可以將命名空間添加到xml中,如下所示:
xml.records('xmlns:structure' :"http://test.ch/structure/1" ...
但是我如何為xml元素創建名稱空間前綴? 我找到的唯一解決方案是:
tester('xmlns:structure' :"http://test.ch/structure/1", 'ZH')
但這給了我以下輸出:
<tester xmlns:structure='http://test.ch/structure/1'>ZH</tester>
它的語法是正確的,但是當你有很多節點時閱讀並不好。
你可以這樣做(不確定它是你想要的)
import groovy.xml.StreamingMarkupBuilder
import groovy.xml.XmlUtil
def xmlBuilder = new StreamingMarkupBuilder()
writer = xmlBuilder.bind {
mkp.declareNamespace( register: "http://www.test.ch/register/1" )
mkp.declareNamespace( structure: "http://test.ch/structure/1" )
'structure:structuralDataRoot' {
'structure:tester'( 'ZH' )
'structure:surveyYear'( 2001 )
'structure:surfaceData' {
'structure:houseSurfaceData' {
'structure:creationDate'( '2001-01-01' )
'structure:localFarmId' {
'register:houseIdCategory'( 'token' )
'register:houseId'( 'token' )
}
}
}
}
}
println XmlUtil.serialize( writer )
該代碼輸出:
<?xml version="1.0" encoding="UTF-8"?>
<structure:structuralDataRoot xmlns:register="http://www.test.ch/register/1" xmlns:structure="http://test.ch/structure/1">
<structure:tester>ZH</structure:tester>
<structure:surveyYear>2001</structure:surveyYear>
<structure:surfaceData>
<structure:houseSurfaceData>
<structure:creationDate>2001-01-01</structure:creationDate>
<structure:localFarmId>
<register:houseIdCategory>token</register:houseIdCategory>
<register:houseId>token</register:houseId>
</structure:localFarmId>
</structure:houseSurfaceData>
</structure:surfaceData>
</structure:structuralDataRoot>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.