Přeskočit na obsah

Převod souboru INI do XML

Převeďte nastavení INI na použitelný formát XML a zároveň zkontrolujte syntaxi, kódování a omezení cílového schématu.

Převádějte soubory INI online

Pro převod INI do XML zatím vlastní online konvertor nemáme, ale soubory INI můžete online převést do těchto formátů:

Chcete převádět INI na XML?

Dejte nám vědět. Podle zájmu vybíráme, které převody přidáme jako další.

Jak převést soubor ini do formátu xml

Program, utilita zařízení nebo systém pro správu konfigurace může vyžadovat XML, pokud jsou původní nastavení uložena ve formátu INI. Převod souboru umožní nastavení importovat, ověřit podle XML schématu nebo vyměňovat se softwarem, který nedokáže číst INI.

Co je formát INI

INI je konfigurační formát prostého textu založený na sekcích a dvojicích klíč–hodnota, například timeout=30 pod položkou [network]. Běžně se používá v aplikacích pro Windows, starším desktopovém softwaru, hrách, instalačních programech, vývojových nástrojích a utilitách zařízení od konkrétních výrobců.

INI nemá univerzální specifikaci. Jednotlivé programy se liší znaky pro komentáře, oddělovači, použitím uvozovek, interpolací, chováním při duplicitních klíčích, rozlišováním velkých a malých písmen, víceřádkovými hodnotami a podporou polí nebo vnořených dat. Soubor platný pro jednu aplikaci nemusí být platný pro jinou.

Co je formát XML

XML reprezentuje data pomocí vnořených elementů, atributů, textových hodnot, uzavíracích tagů a definovaných pravidel escapování. Může být doplněno jmennými prostory a externím schématem XSD pro ověření struktury a datových typů; XML se neověřuje automaticky samo.

XML je vhodné pro aplikace, které vyžadují definovanou hierarchii, jmenné prostory, ověření podle schématu nebo standardizovanou výměnu dat. Obvykle je podrobnější než INI, takže převod zpravidla zvětší velikost souboru, místo aby ji zmenšil.

Jak převést INI na XML

Pro místní převod poskytují standardní knihovny Pythonu configparser a xml.etree.ElementTree opakovaně použitelnou možnost bez nahrávání přihlašovacích údajů, klíčů API, názvů hostitelů nebo nastavení zařízení. Tento skript vytváří obecnou reprezentaci XML; neodvozuje schéma XML vyžadované konkrétní aplikací.

  1. Nainstalujte Python 3 z python.org, pokud ještě není k dispozici.
  2. Uložte následující kód jako ini_to_xml.py:
import configparser
import sys
import xml.etree.ElementTree as ET

source, target = sys.argv[1:3]
config = configparser.ConfigParser(
    interpolation=None,
    strict=False,
    empty_lines_in_values=False
)
config.optionxform = str

with open(source, encoding="utf-8") as file:
    config.read_file(file)

root = ET.Element("configuration")

def add_section(parent, name, values):
    section = ET.SubElement(parent, "section", {"name": name})
    for key, value in values.items():
        entry = ET.SubElement(section, "entry", {"name": key})
        entry.text = value

if config.defaults():
    add_section(root, "DEFAULT", config.defaults())

for section_name in config.sections():
    # _sections contains values written in this section, excluding DEFAULT values.
    values = {
        key: value
        for key, value in config._sections[section_name].items()
        if key != "__name__"
    }
    add_section(root, section_name, values)

ET.indent(root, space="  ")
ET.ElementTree(root).write(target, encoding="utf-8", xml_declaration=True)
  1. Spusťte jej z terminálu:
python ini_to_xml.py settings.ini settings.xml

Pro vstup obsahující [network] a timeout=30 bude výstup obsahovat:

<configuration>
  <section name="network">
    <entry name="timeout">30</entry>
  </section>
</configuration>

Obecná struktura používá názvy sekcí a klíčů jako hodnoty atributů, takže lze reprezentovat i názvy, které nejsou platnými názvy XML elementů. Pokud přijímající aplikace vyžaduje konkrétní kořenový element, podřízené elementy, atributy, jmenný prostor nebo schéma, upravte skript tak, aby místo toho vytvářel požadovanou strukturu, a tento výstup neimportujte beze změn.

Desktopové a online možnosti

Pro příležitostný ruční převod použijte Notepad++ nebo jiný editor prostého textu a namapujte každou sekci a klíč INI do struktury XML vyžadované cílovým programem. Oxygen XML Editor a podobné desktopové XML editory mohou výsledné XML formátovat, upravovat a ověřovat, neposkytují však univerzální import INI, protože INI nemá konzistentní datový model.

Online převodník je vhodný pouze pro jednoduchý soubor, který neobsahuje citlivá data. Používejte pouze renomovanou službu, pokud její aktuální seznam formátů výslovně přijímá vstup INI a vytváří výstup XML; obecné převodníky dokumentů mohou INI odmítnout nebo s ním zacházet jako s nestrukturovaným textem. Nenahrávejte hesla, soukromé klíče, přihlašovací údaje API, proprietární nastavení ani konfiguraci zařízení. Stažené XML před použitím zkontrolujte lokálně.

Omezení kvality a kompatibility

Skript zachovává názvy sekcí a analyzované hodnoty, nezachovává však komentáře, původní mezery, formátování ani syntaxi specifickou pro danou aplikaci. Rovněž nereprodukuje chování interpolace, rozšiřování proměnných prostředí, podmíněných nastavení ani vlastních konvencí pro pole a vnořené hodnoty.

strict=False umožňuje při analýze duplicitní klíče, ale zachová se pouze poslední hodnota. Pokud mají duplicitní klíče vyvolat chybu, tuto volbu odeberte. interpolation=None kopíruje sekvence procent doslovně, místo aby s nimi zacházelo jako s odkazy. Výchozí parser také očekává podporované oddělovače a odmítá některé dialekty INI, včetně samostatných klíčů, pokud není nakonfigurováno allow_no_value=True.

Příklad načítá UTF-8 a zapisuje UTF-8 s deklarací XML. Před převodem zjistěte původní kódování znaků používané programem; starší software pro Windows může používat znakovou stránku, například Windows-1252. Neplatné řídicí znaky XML nelze zapsat a hodnoty se znaky citlivými z hlediska XML jsou pomocí ElementTree escapovány.

Výsledek ověřte importérem cílové aplikace nebo jejím XSD a poté nastavení otestujte v neprodukčním prostředí. Syntakticky platný soubor XML může být stále nekompatibilní s požadovanými názvy, typy, výchozími hodnotami, pořadím nebo jmenným prostorem přijímajícího programu.

INI vs XML: srovnání formátů

Jak si formáty INI a XML stojí v nejdůležitějších vlastnostech pro tento převod.

Srovnání souborových formátů INI a XML
Vlastnost .INI INI file .XML Extensible Markup Language
Otevřený standard — Ano
Komprese Bez komprese Bez komprese
Typická velikost souboru Velmi malé Malé
Otevírá se ve webovém prohlížeči Ne Ano, nativně
Další úpravy Snadné Snadné
Podpora metadat Základní Základní
Čitelný jako prostý text Ano Ano
Nejvhodnější pro Výměna dat Výměna dat
Zavedeno — 1998
Vývojář — W3C
MIME typ — application/xml

Informace o příponách a typech souborů poskytuje File-Extensions.org

Soubor už byl stažen

Tento soubor už byl stažen. Kvůli ochraně soukromí jsme ho hned po stažení smazali ze serveru, takže ho nejde stáhnout znovu. Pokud ho potřebujete ještě jednou, převeďte soubor znovu.