我在xml中得到一个属性“lang”,应该转换为“xml:lang”,保持其他元素和属性不变,并将DOCTYPE标记添加为第二行。我需要使用SAP HANA集成平台中的代码。
请帮我分享Groovy或javascript代码以实现上述目标。
例如:输入
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Description lang="en">TEST</Description>
<Forecast>
<Period endDate="2016-09-01T23:59:59+02:00" startDate="2016-09-01T00:00:00+02:00"/>
<ForecastQuantity quantity="34.0">
<name lang="en">TEST1</name>
<UnitOfMeasure>EA</UnitOfMeasure>
</ForecastQuantity>
</Forecast>
</root>
输出应为:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.029/cXML.dtd">
<root>
<Description xml:lang="en">TEST</Description>
<Forecast>
<Period endDate="2016-09-01T23:59:59+02:00" startDate="2016-09-01T00:00:00+02:00"/>
<ForecastQuantity quantity="34.0">
<name xml:lang="en">TEST1</name>
<UnitOfMeasure>EA</UnitOfMeasure>
</ForecastQuantity>
</Forecast>
</root>
由于
答案 0 :(得分:1)
您可以更改属性名称,如:
def startXml = """<?xml version="1.0" encoding="UTF-8"?>
<root>
<Description lang="en">TEST</Description>
<Forecast>
<Period endDate="2016-09-01T23:59:59+02:00" startDate="2016-09-01T00:00:00+02:00"/>
<ForecastQuantity quantity="34.0">
<name lang="en">TEST1</name>
<UnitOfMeasure>EA</UnitOfMeasure>
</ForecastQuantity>
</Forecast>
</root>"""
def parser = new XmlParser()
def root = parser.parseText( startXml )
root.Forecast.ForecastQuantity.name[0].replaceNode{
name( 'xml:lang': root.Forecast.ForecastQuantity.name.@lang[0],
root.Forecast.ForecastQuantity.name[0].value() )
}
println XmlUtil.serialize( root )
可生产
<?xml version="1.0" encoding="UTF-8"?>
<root>
<Description lang="en">TEST</Description>
<Forecast>
<Period endDate="2016-09-01T23:59:59+02:00" startDate="2016-09-01T00:00:00+02:00"/>
<ForecastQuantity quantity="34.0">
<name xml:lang="en">TEST1</name>
<UnitOfMeasure>EA</UnitOfMeasure>
</ForecastQuantity>
</Forecast>
</root>