2016-10-19 5 views
0
import xml.etree.ElementTree as ET 

var3 = raw_input("Enter the root Element: \n") 
root = ET.Element(var3) 
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") 

def printme(): 

    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_rows): 
     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, используя python.Как создать xml динамически?

Как создать несколько подкорней?

Я даю имя файла с консоли для хранения письменных элементов в xml. Указывает эту ошибку:

TypeError: descriptor 'write' requires a 'file' object but received a 'str' 

Что мне делать?

+0

Вы уже создали xml-файл. В чем проблема ? Вам нужен цикл 'for' для создания большего количества элементов? Или 'ET.parse (" filename.xml ")' читать файл? – furas

+0

Я даю имя файла из консоли для хранения письменных элементов в xml, но при этом он дает ошибку, что «TypeError: дескриптор« write »требует объекта« file », но получил« str ». Что мне делать? –

ответ

0

Вы не принимаете. элементов пользователя, но вы его не используете. Используйте петлю и получить детали элемента от пользователя внутри цикла, как показано ниже:

import xml.etree.ElementTree as ET 
try: 
    no_of_rows=int(input("Enter the number of Element for XML files: - \n")) 
    root = input("Enter the root Element: \n") 
    root_element = ET.Element(root) 
    for _ in range(1, no_of_rows): 
     tag = input("Enter Element: - \n") 
     value = input("Enter Data: - \n")  
     ET.SubElement(root_element, tag).text = value 

    tree = ET.ElementTree(root_element) 
    tree.write("filename.xml") 

    print("Xml file Created..!!") 
except ValueError: 
    print("Value Error") 
except: 
    print("Exception Occuured") 
    enter code here 

Я надеюсь, что это то, что вы хотите достичь.

+0

После ввода корневого имени он показывает исключение, что «Исключение произошло». Какой код следует вставить? –

+0

@MahaveerBubanale Код, который я привел здесь, предназначен для Python 3, и вы используете Python 2+. Существует небольшая разница между 'input' в Python 3 и Python 2+, см. Http://stackoverflow.com/questions/4915361/whats-the-difference-between-raw-input-and-input-in-python3- Икс . Если вы измените 'input' на' raw_input' в моем коде, это не вызовет никаких исключений. – gugaheri

+0

Могу ли я изменить тот же файл с помощью операции diff? и как? –

-1

Если вы хотите создать XML, вы можете просто сделать следующее:

from lxml import etree 
try: 
    root_text = raw_input("Enter the root Element: \n") 
    root = etree.Element(root_text) 
    child_tag = raw_input("Enter the child tag Element: \n") 
    child_text = raw_input("Enter the child text Element: \n") 
    child = etree.Element(child_text) 
    child.text =child_text 
    root.append(child) 
    with open('file.xml', 'w') as f: 
     f.write(etree.tostring(root)) 
     f.close() 
except ValueError: 
    print("Occured Error") 

Или, если вы хотите динамическую длину вы просто использовать для петли.

+0

Обнаруженный «root_text» в строке 3, столбец 1. Ожидал: «». показывая ошибку –

+0

Где вы запускаете этот код? –

+0

Да теперь работает абсолютно нормально. спасибо –

Смежные вопросы