简体   繁体   中英

Python minidom xml file creation, getting extra tags

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM