Vai al contenuto

Converti INI in XML

Convertire le impostazioni INI in XML utilizzabile, verificando la sintassi, l'encoding e i limiti dello schema di destinazione.

Converti i file INI online

Non abbiamo ancora un convertitore online dedicato per INI in XML, ma puoi convertire i file INI online in questi formati:

Vuoi convertire INI in XML?

Faccelo sapere. Scegliamo le prossime conversioni da aggiungere in base all'interesse.

Come convertire ini in xml file

  • Altro
  • Ancora nessuna valutazione.

Un programma, un'utilità del dispositivo o un sistema di gestione della configurazione può richiedere XML quando le impostazioni originali sono archiviate in formato INI. La conversione consente di importare le impostazioni, convalidarle rispetto a uno schema XML o scambiarle con software che non è in grado di leggere INI.

Cos'è il formato INI

INI è un formato di configurazione in testo semplice costituito da sezioni e coppie chiave-valore, come timeout=30 nella sezione [network]. È comune nelle applicazioni Windows, nei software desktop legacy, nei giochi, nei programmi di installazione, negli strumenti di sviluppo e nelle utilità per dispositivi specifiche dei fornitori.

INI non dispone di una specifica universale. I programmi differiscono per caratteri dei commenti, delimitatori, virgolette, interpolazione, comportamento in presenza di chiavi duplicate, distinzione tra maiuscole e minuscole, valori multilinea e supporto per array o dati nidificati. Un file valido per un'applicazione potrebbe non essere valido per un'altra.

Cos'è il formato XML

XML rappresenta i dati con elementi nidificati, attributi, valori testuali, tag di chiusura e regole di escaping definite. Può essere accompagnato da namespace e da uno schema XSD esterno per la convalida della struttura e dei tipi di dati; XML non esegue automaticamente la convalida di se stesso.

XML è adatto alle applicazioni che richiedono una gerarchia definita, namespace, convalida tramite schema o uno scambio di dati standardizzato. Di solito è più prolisso di INI, quindi la conversione normalmente aumenta le dimensioni del file anziché ridurle.

Come convertire INI in XML

Per una conversione locale, configparser e xml.etree.ElementTree della libreria standard di Python offrono un'opzione ripetibile senza caricare credenziali, chiavi API, nomi host o impostazioni dei dispositivi. Questo script crea una rappresentazione XML generica; non individua automaticamente lo schema XML richiesto da una particolare applicazione.

  1. Installa Python 3 da python.org se non è già disponibile.
  2. Salva il codice seguente come 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 contiene i valori scritti in questa sezione, esclusi i valori DEFAULT.
    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. Eseguilo da un terminale:
python ini_to_xml.py settings.ini settings.xml

Per un input contenente [network] e timeout=30, l'output include:

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

La struttura generica utilizza i nomi delle sezioni e delle chiavi come valori degli attributi, quindi è possibile rappresentare anche nomi che non sono nomi validi per elementi XML. Se l'applicazione ricevente richiede uno specifico elemento radice, elementi figlio, attributi, namespace o schema, modifica lo script per generare tale struttura invece di importare questo output senza modificarlo.

Opzioni desktop e online

Per una conversione manuale occasionale, usa Notepad++ o un altro editor di testo semplice per associare ogni sezione e chiave INI alla struttura XML richiesta dal programma di destinazione. Oxygen XML Editor e altri editor XML desktop simili possono formattare, modificare e convalidare l'XML risultante, ma non offrono un'importazione INI universale perché INI non dispone di un modello di dati coerente.

Un convertitore online è adatto solo per un file semplice e non sensibile. Usa un servizio affidabile soltanto quando il suo elenco dei formati aggiornato accetta esplicitamente input INI e produce output XML; i convertitori generici di documenti potrebbero rifiutare INI o trattarlo come testo non strutturato. Non caricare password, chiavi private, credenziali API, impostazioni proprietarie o configurazioni dei dispositivi. L'XML scaricato deve essere controllato localmente prima dell'uso.

Limiti di qualità e compatibilità

Lo script conserva i nomi delle sezioni e i valori analizzati, ma non conserva i commenti, gli spazi originali, la formattazione o la sintassi specifica dell'applicazione. Inoltre, non riproduce il comportamento dell'interpolazione, dell'espansione delle variabili d'ambiente, delle impostazioni condizionali o delle convenzioni personalizzate per array e valori nidificati.

strict=False consente la presenza di chiavi duplicate durante l'analisi, ma viene conservato solo l'ultimo valore. Rimuovi questa opzione quando le chiavi duplicate devono causare un errore. interpolation=None copia letteralmente le sequenze percentuali invece di trattarle come riferimenti. Il parser predefinito richiede inoltre delimitatori supportati e rifiuta alcuni dialetti INI, incluse le chiavi prive di valore, a meno che non venga configurato allow_no_value=True.

L'esempio legge UTF-8 e scrive UTF-8 con una dichiarazione XML. Individua la codifica dei caratteri utilizzata dal programma originale prima della conversione; i software Windows meno recenti potrebbero utilizzare una tabella codici come Windows-1252. I caratteri di controllo XML non validi non possono essere scritti e i valori contenenti caratteri sensibili per XML vengono sottoposti a escaping da ElementTree.

Convalida il risultato con l'importatore dell'applicazione di destinazione o con il relativo XSD, quindi testa le impostazioni in un ambiente non di produzione. Un file XML sintatticamente valido può comunque essere incompatibile con i nomi, i tipi, i valori predefiniti, l'ordine o il namespace richiesti dal programma ricevente.

Confronto formato: INI vs XML

Come i formati INI e XML si confrontano sulle proprietà più importanti per questa conversione.

Confronto dei formati INI e XML
Proprietà .INI INI file .XML Extensible Markup Language
Standard aperto — Sì
Compressione Non compresso Non compresso
Dimensione tipica del file Molto piccolo Piccolo
Si apre in un browser web No Sì, nativamente
Modifica successiva Facile Facile
Supporto metadata Base Base
Leggibile come testo semplice Sì Sì
Ideale per Scambio dati Scambio dati
Introdotto — 1998
Sviluppatore — W3C
Tipo MIME — application/xml

Le informazioni su estensioni e tipi di file sono fornite da File-Extensions.org

Già scaricato

Questo file è già stato scaricato. Per tutelare la tua privacy lo abbiamo eliminato dal nostro server subito dopo il download, quindi non può essere scaricato di nuovo. Se ti serve ancora, converti di nuovo il file.