简体   繁体   English

Python minidom xml文件创建,获得额外的标签

[英]Python minidom xml file creation, getting extra tags

Python minidom xml file creation, getting extra tags From the below code snippet Python minidom xml文件创建,从下面的代码片段中获取额外的标签

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. 那是因为您要添加空文本节点作为<txtLyr_a2a>元素的内容。 Remove the following two lines to get self-closing tags : 删除以下两行以获取自动关闭标签:

xmltext = doc.createTextNode("");
xmlnode.appendChild(xmltext)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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