2012-10-17 46 views
-1

可能重复的XML文件:
Creating a simple XML file using python创建使用Python

我想写从Python中的XML文件。 的XML就像只以下格式:

<Title rollid="1" mainid="1" teamid="1"> 
<s name="hello" address"abcdef" "etc"/> 
<s name="" address="" /> 
</Title> 

我用Python写的代码中使用lxmletree但XML文件,我得到的是这样的:

<Title> 
<s>rollid=""1" mainid="1"</s> 
<s>name="" address=""</s> 
<s>name="" address=""</s> 
</Title> 

请让我知道如何得到想要的格式

我的代码:

import os 
import sys 

进口lxml.builder作为磅 从LXML进口etree

#i made a dummy file AddDetail.xml with the root tags 

def WriteDetails(rolid,mainid,name,address): 
    myhash=dict() # Declaring a dictionary 

    #Storing the data which has to be written to xml in a dictionary 
    myhash={'rollid':rolid, 'mainid':mainid, 'name':name, 'opid':opid, 'address':address} 

    # Converting the data from dictionary to string for XML and 
    also checking if any valueis 0 
    data=' '.join([('%s="%s"')%(key,value) for key,value in myhash.iteritems()if value]) 

    # Creating the root Element 
    root=etree.Element("Title") 

    # Making a new Document Tree 
    doc=etree.parse('AddDetail.xml') 

    # Getting the root tag 
    root=doc.getroot() 

    # Adding a new Element 
    y=lab.E.Title(lb.E.s(data), 
    rollid="1" mainid="1" teamid="1") 
    print etree.tostring(y,pretty_print=true) 

    output i get is 

    <Title rollid="1" mainid="1" teamid="1"> 
    <s>name="hello" address="aaaa"</s> 
    </Title> 

    I need something like 
    <Title rollid="1" mainid="1" teamid="1"> 
    <s name="hello" address="aaaa"/> 
    </Title> 
+7

告诉我们你的代码 – root

+0

http://stackoverflow.com/questions/3605680/creating-a-simple-xml-file-using-python?rq=1 – nexoma

+0

这看起来像一个错字:地址“ABCDEF “ – guettli

回答

0

使用lxml.builder,here's教程太。

import lxml.builder as lb 
    from lxml import etree 

y=lb.E.Title(lb.E.s(name="hello",adress="abcdef"), 
      lb.E.s(name="",adress=""), 
      rollid="1", mainid="1",teamid="1") 

print etree.tostring(y, pretty_print=True) 

>>> 
<Title teamid="1" rollid="1" mainid="1"> 
    <s adress="abcdef" name="hello"/> 
    <s adress="" name=""/> 
</Title> 
+0

如果不是打印名称和地址的值,如果我传递一个变量,那么格式会被更改。我得到类似 dasff user1705326

+0

editied我的老问题只.. – user1705326

+0

不,你不应该编辑你的旧问题,如果你有一个新的问题。 http://meta.stackexchange.com/questions/145773/can-i-replace-an-old-question-by-editing-it你的原始问题已被正确回答。 – root