读取sld文件,修改颜色代码(红框部分),要求文件python和sld在同一目录下。
示例,读取line.sld并生成新的sld文件。
from xml.dom import minidom
def EditSld(fill_color):
with open('line.sld', 'r', encoding='UTF-8') as fh:
# parse()获取DOM对象
dom = minidom.parse(fh)
# 获取根节点
root = dom.documentElement
# 节点名称
print(root.nodeName)
# 节点类型:'ELEMENT_NODE',元素节点; 'TEXT_NODE',文本节点; 'ATTRIBUTE_NODE',属性节点
print(root.nodeType)
# 获取某个节点下所有子节点,是个列表
print(root.childNodes)
name = root.getElementsByTagName('CssParameter')
# 修改颜色
name[0].firstChild.data = fill_color
try:
with open(fill_color[1:]+'.sld', 'w', encoding='UTF-8') as fh:
# writexml()第一个参数是目标文件对象,第二个参数是根节点的缩进格式,第三个参数是其他子节点的缩进格式,
# 第四个参数制定了换行格式,第五个参数制定了xml内容的编码。
dom.writexml(fh, indent='', addindent='\t', encoding='UTF-8')
return fill_color[1:]+'.sld'
except Exception as err:
print('错误信息:{0}'.format(err))