Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Как из xml в json python json?

  1. Как из xml в json python json?

    Ребята, привет! Тут возникла ситуация, где мне нужно фигачить xml в json, а все это дело я пытаюсь сделать на python json. Вроде бы всё понятно, но вот реально уже мозг кипит. Может вырулите, посоветуете библиотечки или какие-нибудь хитрые способы, чтобы держать код чистым и без багов? Заранее спасибо, кореша!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Привет! Самое простоё решение - воспользоваться библиотечкой xmltodict и встроенным модулем json. Вот примеры, брателло:
    Программный код:
    import xmltodict
    import json

    with open
    ('data.xml') as xml_file:
    data_dict xmltodict.parse(xml_file.read())
    json_data json.dumps(data_dictindent=4)

    with open('data.json''w') as json_file:
    json_file.write(json_data
    Вообще, xmltodict делает магию - конвертит всё в словари python, а дальше уже json дружит без проблем. Пробуй!

  4. Цитата Сообщение от Сергей7019
    Привет! Самое простоё решение - воспользоваться библиотечкой xmltodict и встроенным модулем json. Вот примеры, брателло:
    Программный код:
    import xmltodict
    import json

    with open
    ('data.xml') as xml_file:
    data_dict xmltodict.parse(xml_file.read())
    json_data json.dumps(data_dictindent=4)

    with open('data.json''w') as json_file:
    json_file.write(json_data
    Вообще, xmltodict делает магию - конвертит всё в словари python, а дальше уже json дружит без проблем. Пробуй!
    Круто, xmltodict реально спасает в таких случаях. Простой и понятный пример, респект!

  5. Я бы ещё добавил проверку на ошибки в xml, чтобы сразу видеть, если что-то не так. Используй try/except для этого. Вот кусок кода:
    Программный код:
    try:
    with open('data.xml') as xml_file:
    data_dict xmltodict.parse(xml_file.read())
    json_data json.dumps(data_dictindent=4)
    except Exception as e:
    print(
    f'Ошибка: {e}'

  6. Цитата Сообщение от Electro
    Я бы ещё добавил проверку на ошибки в xml, чтобы сразу видеть, если что-то не так. Используй try/except для этого. Вот кусок кода:
    Программный код:
    try:
    with open('data.xml') as xml_file:
    data_dict xmltodict.parse(xml_file.read())
    json_data json.dumps(data_dictindent=4)
    except Exception as e:
    print(
    f'Ошибка: {e}'
    Огонь! try/except всегда выручает в таких ситуациях. Важно всё проверять, +1 за это!

  7. Если хочешь ещё глубже копнуть, глянь в сторону библиотеки lxml. Она мощнее, но и код чуть сложнее будет такой:
    Программный код:
    from lxml import etree
    import json

    parser 
    etree.XMLParser()
    with open('data.xml''rb') as xml_file:
    tree etree.parse(xml_fileparser)
    root tree.getroot()

    def etree_to_dict(t):
    = {t.tag: {} if t.attrib else None}
    children = list(t)
    if 
    children:
    dd dict((child.tagetree_to_dict(child)) for child in children)
    = {t.tagdd}
    elif t.attrib:
    d[t.tag].update('@' for kv in t.attrib.items())
    else:
    d[t.tag] = t.text
    return d

    data_dict 
    etree_to_dict(root)
    json_data json.dumps(data_dictindent=4)
    with open('data.json''w') as json_file:
    json_file.write(json_data

  8. Цитата Сообщение от MoominTroll
    Если хочешь ещё глубже копнуть, глянь в сторону библиотеки lxml. Она мощнее, но и код чуть сложнее будет такой:
    Программный код:
    from lxml import etree
    import json

    parser 
    etree.XMLParser()
    with open('data.xml''rb') as xml_file:
    tree etree.parse(xml_fileparser)
    root tree.getroot()

    def etree_to_dict(t):
    = {t.tag: {} if t.attrib else None}
    children = list(t)
    if 
    children:
    dd dict((child.tagetree_to_dict(child)) for child in children)
    = {t.tagdd}
    elif t.attrib:
    d[t.tag].update('@' for kv in t.attrib.items())
    else:
    d[t.tag] = t.text
    return d

    data_dict 
    etree_to_dict(root)
    json_data json.dumps(data_dictindent=4)
    with open('data.json''w') as json_file:
    json_file.write(json_data
    Ну ты даёшь, это прям хардкорный способ. Уважуха за lxml, но новичкам этот вариант будет сложноват.

  9. Если тебе нужно просто и быстро, то xmltodict явно чётко подходит. Но, кстати, не забывай про правильную кодировку файлов. Можешь использовать encoding параметр:
    Программный код:
    import xmltodict
    import json

    with open
    ('data.xml'encoding='utf-8') as xml_file:
    data_dict xmltodict.parse(xml_file.read())
    json_data json.dumps(data_dictindent=4)

    with open('data.json''w'encoding='utf-8') as json_file:
    json_file.write(json_data

  10. Цитата Сообщение от Железный
    Если тебе нужно просто и быстро, то xmltodict явно чётко подходит. Но, кстати, не забывай про правильную кодировку файлов. Можешь использовать encoding параметр:
    Программный код:
    import xmltodict
    import json

    with open
    ('data.xml'encoding='utf-8') as xml_file:
    data_dict xmltodict.parse(xml_file.read())
    json_data json.dumps(data_dictindent=4)

    with open('data.json''w'encoding='utf-8') as json_file:
    json_file.write(json_data
    Знаешь, encoding - это тема, это реально помогает, если с кодировкой беды. Молодца, что упомянул!

Страница 1 из 2 12 ПоследняяПоследняя