#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 Также избегайте использования namefile
, поскольку это встроенное ключевое слово.4. После изменения имени файла также отображается это NameError.
5. go — это не что иное, как имя XML-файла