如何解决如何使用XMLSlurper修改XML节点属性
我正在尝试重命名父节点和子节点,并编写类似这样的代码
def xml = (''' <resultset columns="13" rows="2">
<row number="1">
<enterpise>DE</enterpise>
<line>0001</line>
<name>DELL</name>
<version>0.01</version>
<updtae isnull="true"/>
</row>
<row number="2">
<enterpise>DF</enterpise>
<line>0002</line>
<name>DELL</name>
<version>0.01</version>
<updtae isnull="true"/>
</row>
</resultset>
''')
def resultset = new XmlSlurper().parseText(xml)
def record = resultset.record.find{ it.@columns=='13'}.each
{ p -> p.attributes().13('columns') }
resultset.row.replaceNode { row { tr { td("DE") } tr { td("0001") } } }
预期结果是
<Row ss:AutoFitHeight="0">
<tr><td ss:Type="String">DE</td></tr>
<tr><td ss:Type="Number">0001</td></tr>
<tr><td ss:Type="Sring">DELL</td></tr>
<tr><td ss:Type="Number">0.01</td></tr>
<tr><td ss:Type="String"></td></tr>
</Row>
<Row ss:AutoFitHeight="0">
<tr><td ss:Type="String">DF</td></tr>
<tr><td ss:Type="Number">0002</td></tr>
<tr><td ss:Type="Sring">DELL</td></tr>
<tr><td ss:Type="Number">0.01</td></tr>
<tr><td ss:Type="String"></td></tr>
</Row>
我无法删除父标签(结果集)标签,而不是传递值“ DE”或“ 0001”,而是需要动态获取它。你能帮我完成这个吗
解决方法
以下代码:
plt.scatter(record_high.Date.values,record_high.Data_Value.values,color='red')
plt.scatter(record_low.Date.values,record_low.Data_Value.values,color='blue',s=8)
plt.xlabel('Date',fontsize=10)
plt.ylabel('° Celsius',fontsize=10)
plt.title('Temperature in Ann Arbour,Michigan (2005-2015)',fontsize=12)
plt.legend(['Record high (2005-2014)','Record low (2005-2014)','Record breaking high in 2015','Record breaking low in 2015'],loc=0,frameon=False)
plt.fill_between(x=date_index,y1=max_temp,y2=min_temp,facecolor='grey',alpha=0.25)
运行时,将产生以下输出:
import groovy.xml.*
def inData = '''
<resultset columns="13" rows="2">
<row number="1">
<enterpise>DE</enterpise>
<line>0001</line>
<name>DELL</name>
<version>0.01</version>
<updtae isnull="true"/>
</row>
<row number="2">
<enterpise>DF</enterpise>
<line>0002</line>
<name>DELL</name>
<version>0.01</version>
<updtae isnull="true"/>
</row>
</resultset>'''
def inXml = new XmlSlurper().parseText(inData)
def outData = new StringWriter()
def outXml = new MarkupBuilder(outData)
inXml.row.each { row ->
outXml.Row('ss:AutoFitHeights': 0) {
tr { td('ss:Type': 'String',row.enterpise) }
tr { td('ss:Type': 'Number',row.line) }
tr { td('ss:Type': 'String',row.name) }
tr { td('ss:Type': 'Number',row.version) }
tr { td('ss:Type': 'String') }
}
}
println outData
我认为它与您要创建的内容非常接近。通常,如果您要进行转换,而不仅仅是删除节点,那么像上面的代码中那样,创建一个全新的xml文档会变得更加容易。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。