2012-05-28 4 views
0

Пожалуйста, посмотрите ниже код, который я использую для генерации xml с использованием python.Создание Xml с использованием python

from lxml import etree 


# Some dummy text 
conn_id = 5 
conn_name = "Airtelll" 
conn_desc = "Largets TRelecome" 
ip = "192.168.1.23" 

# Building the XML tree 
# Note how attributes and text are added, using the Element methods 
# and not by concatenating strings as in your question 
root = etree.Element("ispinfo") 
child = etree.SubElement(root, 'connection', 
       number = str(conn_id), 
       name = conn_name, 
       desc = conn_desc) 
subchild_ip = etree.SubElement(child, 'ip_address') 
subchild_ip.text = ip 

# and pretty-printing it 
print etree.tostring(root, pretty_print=True) 

Это будет производить:

<ispinfo> 
    <connection desc="Largets TRelecome" number="5" name="Airtelll"> 
    <ip_address>192.168.1.23</ip_address> 
    </connection> 
</ispinfo> 

Но я хочу, чтобы это было как:

<ispinfo> 
    <connection desc="Largets TRelecome" number='1' name="Airtelll"> 
    <ip_address>192.168.1.23</ip_address> 
    </connection> 
</ispinfo> 

Среднее число атрибутов должен быть прийти в единый цитатой .any идеи .... Как я могу достичь этого

+0

Ребята, дайте мне знать, если требуется какое-либо разъяснение – user1409289

+1

Вы хотите, чтобы значение атрибута в одинарных кавычках вместо двойных кавычек? –

+1

Если «запятая» означает «quote», а «1» означает «5», тогда вам все равно. В XML нет семантической разницы. –

ответ

0

Для этого нет флага в lxml, поэтому вам нужно прибегнуть к ручным манипуляциям.

import re 
re.sub(r'number="([0-9]+)"',r"number='\1'", etree.tostring(root, pretty_print=True)) 

Однако, почему вы хотите это сделать? Поскольку нет никакой разницы, кроме косметики.