Przejdź do treści

Konwertuj INI na XML

Konwertuj ustawienia INI do użytecznego formatu XML, sprawdzając składnię, kodowanie oraz ograniczenia schematu docelowego.

Konwertuj pliki INI online

Nie mamy jeszcze dedykowanego konwertera online dla INI na XML, ale pliki INI możesz przekonwertować online na te formaty:

Chcesz przekonwertować INI na XML?

Daj nam znać. Kolejne konwersje do dodania wybieramy według zainteresowania.

Jak konwertować ini do xml

Program, narzędzie systemowe urządzenia lub system zarządzania konfiguracją może wymagać XML, gdy oryginalne ustawienia są przechowywane w formacie INI. Konwersja pliku umożliwia zaimportowanie ustawień, zweryfikowanie ich względem schematu XML lub wymianę z oprogramowaniem, które nie potrafi odczytywać formatu INI.

Czym jest format INI

INI to tekstowy format konfiguracji zbudowany z sekcji i par klucz-wartość, takich jak timeout=30 w sekcji [network]. Jest często używany w aplikacjach Windows, starszym oprogramowaniu desktopowym, grach, instalatorach, narzędziach programistycznych i narzędziach urządzeń przeznaczonych dla konkretnych dostawców.

INI nie ma uniwersalnej specyfikacji. Programy różnią się obsługiwanymi znakami komentarzy, separatorami, cudzysłowami, interpolacją, zachowaniem w przypadku zduplikowanych kluczy, rozróżnianiem wielkości liter, wartościami wielowierszowymi oraz obsługą tablic lub danych zagnieżdżonych. Plik prawidłowy dla jednej aplikacji może być nieprawidłowy dla innej.

Czym jest format XML

XML reprezentuje dane za pomocą zagnieżdżonych elementów, atrybutów, wartości tekstowych, znaczników zamykających i zdefiniowanych reguł zastępowania znaków. Może mu towarzyszyć przestrzeń nazw oraz zewnętrzny schemat XSD służący do sprawdzania struktury i typów danych; XML nie przeprowadza automatycznej walidacji.

XML sprawdza się w aplikacjach wymagających zdefiniowanej hierarchii, przestrzeni nazw, walidacji schematu lub ustandaryzowanej wymiany danych. Zwykle jest bardziej rozwlekły niż INI, dlatego konwersja zazwyczaj zwiększa rozmiar pliku, zamiast go zmniejszać.

Jak konwertować INI do XML

W przypadku konwersji lokalnej biblioteki standardowe języka Python configparser i xml.etree.ElementTree zapewniają powtarzalną metodę bez przesyłania danych uwierzytelniających, kluczy API, nazw hostów ani ustawień urządzeń. Ten skrypt tworzy ogólną reprezentację XML; nie odgaduje schematu XML wymaganego przez konkretną aplikację.

  1. Zainstaluj Python 3 ze strony python.org, jeśli nie jest jeszcze dostępny.
  2. Zapisz poniższy kod 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. Uruchom go w terminalu:
python ini_to_xml.py settings.ini settings.xml

W przypadku danych wejściowych zawierających [network] i timeout=30 dane wyjściowe obejmują:

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

Ogólna struktura wykorzystuje nazwy sekcji i kluczy jako wartości atrybutów, dzięki czemu można reprezentować również nazwy, które nie są prawidłowymi nazwami elementów XML. Jeśli aplikacja odbierająca wymaga określonego elementu głównego, elementów podrzędnych, atrybutów, przestrzeni nazw lub schematu, zmodyfikuj skrypt tak, aby generował tę strukturę, zamiast importować te dane wyjściowe bez zmian.

Opcje desktopowe i online

W przypadku sporadycznej ręcznej konwersji użyj Notepad++ lub innego edytora tekstu, aby odwzorować każdą sekcję i klucz INI w strukturze XML wymaganej przez program docelowy. Oxygen XML Editor i podobne desktopowe edytory XML mogą formatować, edytować i walidować wynikowy XML, ale nie zapewniają uniwersalnego importu INI, ponieważ INI nie ma spójnego modelu danych.

Konwerter online nadaje się wyłącznie do prostego pliku niezawierającego danych wrażliwych. Korzystaj z renomowanej usługi tylko wtedy, gdy jej aktualna lista formatów wyraźnie akceptuje dane wejściowe INI i generuje dane wyjściowe XML; ogólne konwertery dokumentów mogą odrzucić INI lub potraktować go jako tekst nieustrukturyzowany. Nie przesyłaj haseł, kluczy prywatnych, danych uwierzytelniających API, zastrzeżonych ustawień ani konfiguracji urządzeń. Pobrany XML należy sprawdzić lokalnie przed użyciem.

Ograniczenia jakości i zgodności

Skrypt zachowuje nazwy sekcji i przeanalizowane wartości, ale nie zachowuje komentarzy, oryginalnych odstępów, formatowania ani składni charakterystycznej dla konkretnej aplikacji. Nie odtwarza również działania interpolacji, rozwijania zmiennych środowiskowych, ustawień warunkowych ani niestandardowych sposobów zapisu tablic i wartości zagnieżdżonych.

strict=False umożliwia analizowanie zduplikowanych kluczy, ale zachowywana jest tylko ostatnia wartość. Usuń tę opcję, jeśli zduplikowane klucze powinny powodować błąd. interpolation=None kopiuje sekwencje procentowe dosłownie, zamiast traktować je jako odwołania. Domyślny parser oczekuje również obsługiwanych separatorów i odrzuca niektóre dialekty INI, w tym klucze bez wartości, chyba że skonfigurowano allow_no_value=True.

Przykład odczytuje dane w kodowaniu UTF-8 i zapisuje je w UTF-8 z deklaracją XML. Przed konwersją ustal kodowanie znaków używane przez oryginalny program; starsze oprogramowanie Windows może korzystać ze strony kodowej, takiej jak Windows-1252. Nieprawidłowych znaków sterujących XML nie można zapisać, a wartości zawierające znaki specjalne XML są zastępowane przez ElementTree.

Zweryfikuj wynik za pomocą importera aplikacji docelowej lub jej schematu XSD, a następnie przetestuj ustawienia w środowisku nieprodukcyjnym. Składniowo poprawny plik XML może nadal być niezgodny z wymaganymi przez program odbierający nazwami, typami, wartościami domyślnymi, kolejnością lub przestrzenią nazw.

Porównanie formatu INI z XML

Jak formaty INI i XML wypadają w porównaniu pod względem najważniejszych cech dla tej konwersji.

Porównanie formatów plików INI i XML
Cecha .INI INI file .XML Extensible Markup Language
Otwarty standard — Tak
Kompresja Bez kompresji Bez kompresji
Typowy rozmiar pliku Bardzo mały Mały
Otwiera się w przeglądarce internetowej Nie Tak, natywnie
Dalsza edycja Łatwy Łatwy
Obsługa metadanych Podstawowy Podstawowy
Czytelny tekstowo Tak Tak
Najlepszy do Wymiana danych Wymiana danych
Wprowadzono — 1998
Twórca — W3C
Typ MIME — application/xml

Informacje o rozszerzeniach i typach plików zapewnia File-Extensions.org

Już pobrano

Ten plik został już pobrany. Ze względu na prywatność usunęliśmy go z serwera zaraz po pobraniu, więc nie można go pobrać ponownie. Jeśli potrzebujesz go jeszcze raz, przekonwertuj plik ponownie.