Динамическая генерация xml с использованием python

#python #xml

#python #xml

Вопрос:

createxml.py

 import xml.etree.ElementTree as ET

var3 = raw_input("Enter the root Element: n")
root = ET.Element(var3)

no_of_rows1=input("Enter the number of sub root for XML files: - n")

def printme():
    var4 = raw_input("Enter the sub root Element: n")
    doc = ET.SubElement(root, var4)
    no_of_rows=input("Enter the number of Element for XML files: - n")
   #print no_of_rows
    for num in range(0, no_of_rows):
         print num
         var = raw_input("Enter Element: - n")
         var1 = raw_input("Enter Data: - n")

         ET.SubElement(doc, var).text =var1
    return;
for num in range(0, no_of_rows1):    
    printme()

tree = ET.ElementTree(root)
file = raw_input("Enter File Name: - n")
tree.write(file)

ET.ElementTree(root).write(file, encoding="utf-8",    xml_declaration=True)         
print "Xml file Created..!!"
  

Выше приведен скрипт для динамического создания xml. Но была одна проблема, которая показывала ошибку при записи в XML-файл. Что не так с кодом? Везде, где я даю ввод с консоли, он говорит NameError.

Ниже приведен результат, который я получаю

 Enter the root Element: 
names
Enter the number of sub root for XML files: - 
2
Enter the sub root Element: 
name1
Enter the number of Element for XML files: - 
2
0
Enter Element: - 
fname
Enter Data: - 
mad
1
Enter Element: - 
lname
Enter Data: - 
deck
Enter the sub root Element: 
name2
Enter the number of Element for XML files: - 
2
0
Enter Element: - 
fname
Enter Data: - 
Don
1
Enter Element: - 
lname
Enter Data: - 
brad
Enter File Name: - 
new.xml

Traceback (most recent call last):
File "/home/cosmitude10/neon/createxmlpython/writexml.py", line 27, in    <module>
ET.ElementTree(root).write(file, encoding="utf-8",  xml_declaration=True)         
File "/usr/lib/python2.7/xml/etree/ElementTree.py", line 812, in write
write("<?xml version='1.0' encoding='%s'?>n" % encoding)
TypeError: descriptor 'write' requires a 'file' object but received a 'str'
  

Комментарии:

1. не могли бы вы вставить сюда отображаемую ошибку? Я протестировал ваш код, и он работает нормально (хотя мне приходится делать отступы в коде должным образом).

2. «Ошибка имени: имя ‘go’ не определено» запись в XML-файл. он показывает и получает предупреждение как «Присвоение зарезервированному встроенному символу: файлу»

3. go нигде в опубликованном вами коде не отображается @mad Также избегайте использования name file , поскольку это встроенное ключевое слово.

4. После изменения имени файла также отображается это NameError.

5. go — это не что иное, как имя XML-файла