Python minidom xml file creation, getting extra tags From the below code snippet
import os, glob
import xml.dom
import xml.dom.minidom
doc = xml.dom.minidom.Document()
url = ""
rootelt = doc.createElementNS(url, "txtLyr")
doc.appendChild(rootelt)
i = 1
for l in layers:
if pdb.gimp_drawable_is_text_layer(l):
xmlnode = doc.createElementNS(url, "txtLyr_" + active_dgm)
lbl = "txtLayerLbl" + str(i)
xmlnode.setAttributeNS(url, "txtLyrALbl", "%s"%lbl)
xmlnode.setAttributeNS(url, "txtLyrFSize", "%.1f%d"%pdb.gimp_text_layer_get_font_size(l))
xmlnode.setAttributeNS(url, "txtLyrFClr", "%s"%pdb.gimp_text_layer_get_color(l))
xmlnode.setAttributeNS(url, "txtLyrStr", "%s"%l.name)
xmlnode.setAttributeNS(url, "txtLyrX", "%d"%l.offsets[0])
xmlnode.setAttributeNS(url, "txtLyrY", "%d"%l.offsets[1])
xmlnode.setAttributeNS(url, "txtLyrW", "%d"%l.width)
xmlnode.setAttributeNS(url, "txtLyrH", "%d"%l.height)
i = i + 1
xmltext = doc.createTextNode("");
xmlnode.appendChild(xmltext)
rootelt.appendChild(xmlnode)
gimp.pdb.gimp_message( "Saving to %s"%(outdir+wcname) );
file_object = open(outdir+os.sep+wcname, "w")
file_object.write(doc.toprettyxml(indent=" "));
file_object.close()
I am getting this, What is adding the ">" I only want "/>".
<?xml version="1.0" ?>
<txtLyr>
<txtLyr_a2a txtLyrALbl="txtLayerLbl1" txtLyrFClr="RGB (0.0, 0.0, 0.0, 1.0)" txtLyrFSize="18.00" txtLyrH="22" txtLyrStr="Test 1" txtLyrW="52" txtLyrX="290" txtLyrY="122"></txtLyr_a2a>
<txtLyr_a2a txtLyrALbl="txtLayerLbl2" txtLyrFClr="RGB (0.0, 0.0, 0.0, 1.0)" txtLyrFSize="18.00" txtLyrH="22" txtLyrStr="Test 2" txtLyrW="52" txtLyrX="302" txtLyrY="390"></txtLyr_a2a>
<txtLyr_a2a txtLyrALbl="txtLayerLbl3" txtLyrFClr="RGB (0.0, 0.0, 0.0, 1.0)" txtLyrFSize="18.00" txtLyrH="22" txtLyrStr="Test 3" txtLyrW="52" txtLyrX="261" txtLyrY="738"></txtLyr_a2a>
<txtLyr_a2a txtLyrALbl="txtLayerLbl4" txtLyrFClr="RGB (0.0, 1.0, 0.0, 1.0)" txtLyrFSize="18.00" txtLyrH="22" txtLyrStr="Test 4" txtLyrW="52" txtLyrX="888" txtLyrY="131"></txtLyr_a2a>
<txtLyr_a2a txtLyrALbl="txtLayerLbl5" txtLyrFClr="RGB (0.0, 1.0, 0.0, 1.0)" txtLyrFSize="44.00" txtLyrH="52" txtLyrStr="Test 5" txtLyrW="129" txtLyrX="903" txtLyrY="356"></txtLyr_a2a>
<txtLyr_a2a txtLyrALbl="txtLayerLbl6" txtLyrFClr="RGB (1.0, 0.0, 0.0, 1.0)" txtLyrFSize="44.00" txtLyrH="50" txtLyrStr="Test 6" txtLyrW="103" txtLyrX="929" txtLyrY="635"></txtLyr_a2a>
</txtLyr>
I am trying to get this, cannot figure out what I am missing or adding here, Thanks
<?xml version="1.0" ?>
<txtLyr>
<txtLyr_a2a txtLyrALbl="txtLayerLbl1" txtLyrFClr="RGB (0.0, 0.0, 0.0, 1.0)" txtLyrFSize="18.00" txtLyrH="22" txtLyrStr="Test 1" txtLyrW="52" txtLyrX="290" txtLyrY="122" />
<txtLyr_a2a txtLyrALbl="txtLayerLbl2" txtLyrFClr="RGB (0.0, 0.0, 0.0, 1.0)" txtLyrFSize="18.00" txtLyrH="22" txtLyrStr="Test 2" txtLyrW="52" txtLyrX="302" txtLyrY="390" />
<txtLyr_a2a txtLyrALbl="txtLayerLbl3" txtLyrFClr="RGB (0.0, 0.0, 0.0, 1.0)" txtLyrFSize="18.00" txtLyrH="22" txtLyrStr="Test 3" txtLyrW="52" txtLyrX="261" txtLyrY="738" />
<txtLyr_a2a txtLyrALbl="txtLayerLbl4" txtLyrFClr="RGB (0.0, 1.0, 0.0, 1.0)" txtLyrFSize="18.00" txtLyrH="22" txtLyrStr="Test 4" txtLyrW="52" txtLyrX="888" txtLyrY="131" />
<txtLyr_a2a txtLyrALbl="txtLayerLbl5" txtLyrFClr="RGB (0.0, 1.0, 0.0, 1.0)" txtLyrFSize="44.00" txtLyrH="52" txtLyrStr="Test 5" txtLyrW="129" txtLyrX="903" txtLyrY="356" />
<txtLyr_a2a txtLyrALbl="txtLayerLbl6" txtLyrFClr="RGB (1.0, 0.0, 0.0, 1.0)" txtLyrFSize="44.00" txtLyrH="50" txtLyrStr="Test 6" txtLyrW="103" txtLyrX="929" txtLyrY="635" />
</txtLyr>
That's because you're adding empty text node as content of <txtLyr_a2a>
elements. Remove the following two lines to get self-closing tags :
xmltext = doc.createTextNode("");
xmlnode.appendChild(xmltext)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.