Formatter XML

Formatuj, waliduj i upiększaj dane XML z wykrywaniem błędów w czasie rzeczywistym i pięknym formatowaniem.

XML WejściowyBrak danych XML
Wklej swoje dane XML w lewym edytorze i zobacz sformatowany wynik po prawej.
Sformatowany XML
Sformatowany XML pojawi się tutaj...
Kontrola XML
Formatuj, waliduj i kopiuj swoje dane XML.

Wklej dowolne dane XML, aby automatycznie je sformatować i zwalidować

Użyj przycisku kopiowania, aby szybko skopiować sformatowany wynik

Błędy będą podświetlone z pomocnymi komunikatami

Przewodnik po formacie XML

Kompleksowy przewodnik po składni XML, strukturze, najlepszych praktykach i częstych przypadkach użycia, aby pomóc Ci opanować tworzenie i przetwarzanie dokumentów XML.

Format XML: Kompletny Przewodnik i Najlepsze Praktyki

Czym jest XML?

XML (eXtensible Markup Language) to język znaczników, który definiuje zestaw reguł kodowania dokumentów w formacie czytelnym zarówno dla ludzi, jak i maszyn. XML został zaprojektowany do przechowywania i transportu danych, co czyni go jednym z najszerzej używanych formatów wymiany danych w usługach internetowych, plikach konfiguracyjnych i przechowywaniu dokumentów.

Składnia i Struktura XML

Podstawowe Zasady

  1. Dokumenty XML muszą mieć element główny: Każdy dokument XML musi zawierać dokładnie jeden element główny, który zawiera wszystkie inne elementy
  2. Znaczniki XML rozróżniają wielkość liter: <Nazwa> i <nazwa> to różne elementy
  3. Elementy XML muszą być właściwie zagnieżdżone: Elementy muszą być zamykane w odwrotnej kolejności otwierania
  4. Wartości atrybutów XML muszą być w cudzysłowach: Zawsze używaj podwójnych lub pojedynczych cudzysłowów wokół wartości atrybutów
  5. Encje XML dla znaków specjalnych: Używaj &lt;, &gt;, &amp;, &quot;, &apos; dla znaków specjalnych

Struktura Dokumentu

1. Deklaracja XML

<?xml version="1.0" encoding="UTF-8"?>

2. Podstawowy Dokument XML

<?xml version="1.0" encoding="UTF-8"?>
<korzen>
  <element>Zawartość</element>
  <element atrybut="wartość">Więcej zawartości</element>
</korzen>

3. Elementy i Atrybuty

<ksiazka id="123" kategoria="fikcja">
  <tytul>Wielki Gatsby</tytul>
  <autor>F. Scott Fitzgerald</autor>
  <rok>1925</rok>
  <cena waluta="PLN">49.99</cena>
</ksiazka>

Typy Danych i Zawartość XML

1. Zawartość Tekstowa

<wiadomosc>Witaj, Świecie!</wiadomosc>
<opis>To jest przykładowy opis z zawartością tekstową.</opis>

2. Zawartość Numeryczna

<cena>29.99</cena>
<ilosc>150</ilosc>
<ocena>4.5</ocena>

3. Zawartość Logiczna

<dostepny>true</dostepny>
<przeceniony>false</przeceniony>

4. Zawartość Mieszana

<paragraf>
  Ten tekst zawiera <wyroznienie>wyróżnione</wyroznienie> słowa i 
  <link href="https://example.com">linki</link>.
</paragraf>

5. Elementy Puste

<br/>
<img src="obraz.jpg" alt="Opis"/>
<meta name="opis" content="Opis strony"/>

Popularne Zastosowania XML

1. Pliki Konfiguracyjne

XML jest szeroko używany do konfiguracji aplikacji:

<?xml version="1.0" encoding="UTF-8"?>
<konfiguracja>
  <baza_danych>
    <host>localhost</host>
    <port>5432</port>
    <nazwa>moja_aplikacja_db</nazwa>
    <poswiadczenia>
      <uzytkownik>admin</uzytkownik>
      <haslo>tajne123</haslo>
    </poswiadczenia>
  </baza_danych>
  <logowanie>
    <poziom>INFO</poziom>
    <plik>/var/log/app.log</plik>
    <maksymalny_rozmiar>10MB</maksymalny_rozmiar>
  </logowanie>
</konfiguracja>

2. Wymiana Danych (Usługi Internetowe)

Usługi internetowe SOAP używają XML do formatowania wiadomości:

<?xml version="1.0" encoding="UTF-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <autoryzacja>
      <uzytkownik>user123</uzytkownik>
      <token>abc123xyz</token>
    </autoryzacja>
  </soap:Header>
  <soap:Body>
    <pobierzInfoUzytkownika>
      <idUzytkownika>12345</idUzytkownika>
    </pobierzInfoUzytkownika>
  </soap:Body>
</soap:Envelope>

3. Przechowywanie Dokumentów

XML jest używany do strukturalnego przechowywania dokumentów:

<?xml version="1.0" encoding="UTF-8"?>
<artykul>
  <metadane>
    <tytul>Zrozumienie XML</tytul>
    <autor>Jan Kowalski</autor>
    <data_publikacji>2024-01-15</data_publikacji>
    <kategorie>
      <kategoria>Technologia</kategoria>
      <kategoria>Programowanie</kategoria>
    </kategorie>
  </metadane>
  <zawartosc>
    <sekcja tytul="Wprowadzenie">
      <paragraf>XML to wszechstronny język znaczników...</paragraf>
    </sekcja>
    <sekcja tytul="Składnia">
      <paragraf>XML przestrzega ścisłych reguł składni...</paragraf>
    </sekcja>
  </zawartosc>
</artykul>

4. Kanały RSS

XML zasila kanały RSS i Atom:

<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Wiadomości Tech</title>
    <description>Najnowsze wiadomości i aktualizacje technologiczne</description>
    <link>https://technews.com</link>
    <item>
      <title>Wydano Nowy Framework</title>
      <description>Ogłoszono nowy framework webowy...</description>
      <link>https://technews.com/artykul/1</link>
      <pubDate>Mon, 15 Jan 2024 10:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>

Najlepsze Praktyki XML

1. Używaj Znaczących Nazw Elementów

<!-- Dobrze -->
<zamowienie_klienta>
  <id_klienta>12345</id_klienta>
  <data_zamowienia>2024-01-15</data_zamowienia>
  <calkowita_kwota>299.99</calkowita_kwota>
</zamowienie_klienta>

<!-- Unikaj -->
<zamowienie>
  <id>12345</id>
  <data>2024-01-15</data>
  <suma>299.99</suma>
</zamowienie>

2. Mądrze Wybieraj Atrybuty vs Elementy

<!-- Używaj atrybutów dla metadanych -->
<ksiazka isbn="978-0123456789" jezyk="pl">
  <tytul>Przetwarzanie XML</tytul>
  <cena waluta="PLN">99.99</cena>
</ksiazka>

<!-- Używaj elementów dla zawartości danych -->
<ksiazka>
  <isbn>978-0123456789</isbn>
  <tytul>Przetwarzanie XML</tytul>
  <opis>
    Kompleksowy przewodnik po technikach przetwarzania XML...
  </opis>
</ksiazka>

3. Używaj Przestrzeni Nazw dla Złożonych Dokumentów

<?xml version="1.0" encoding="UTF-8"?>
<korzen xmlns:ksiazka="http://example.com/ksiazka" 
        xmlns:autor="http://example.com/autor">
  <ksiazka:katalog>
    <ksiazka:pozycja id="1">
      <ksiazka:tytul>Przewodnik XML</ksiazka:tytul>
      <autor:info>
        <autor:imie>Anna Nowak</autor:imie>
        <autor:email>anna@example.com</autor:email>
      </autor:info>
    </ksiazka:pozycja>
  </ksiazka:katalog>
</korzen>

4. Waliduj za pomocą XML Schema (XSD)

<!-- Definicja Schematu XML -->
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="ksiazka">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="tytul" type="xs:string"/>
        <xs:element name="autor" type="xs:string"/>
        <xs:element name="rok" type="xs:integer"/>
      </xs:sequence>
      <xs:attribute name="id" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
</xs:schema>

Częste Błędy XML i Rozwiązania

1. Źle Sformułowane: Brakujące Znaczniki Zamykające

<!-- ❌ Nieprawidłowe - brakuje znacznika zamykającego -->
<ksiazka>
  <tytul>Przewodnik XML
  <autor>Jan Kowalski</autor>
</ksiazka>

<!-- ✅ Prawidłowe -->
<ksiazka>
  <tytul>Przewodnik XML</tytul>
  <autor>Jan Kowalski</autor>
</ksiazka>

2. Nieprawidłowe Zagnieżdżenie

<!-- ❌ Nieprawidłowe - złe zagnieżdżenie -->
<ksiazka>
  <tytul>Przewodnik XML
    <autor>Jan Kowalski</tytul>
  </autor>
</ksiazka>

<!-- ✅ Prawidłowe -->
<ksiazka>
  <tytul>Przewodnik XML</tytul>
  <autor>Jan Kowalski</autor>
</ksiazka>

3. Niecytowane Atrybuty

<!-- ❌ Nieprawidłowe - niecytowane atrybuty -->
<ksiazka id=123 kategoria=fikcja>
  <tytul>Przewodnik XML</tytul>
</ksiazka>

<!-- ✅ Prawidłowe -->
<ksiazka id="123" kategoria="fikcja">
  <tytul>Przewodnik XML</tytul>
</ksiazka>

4. Znaki Specjalne Nie Zabezpieczone

<!-- ❌ Nieprawidłowe - niezabezpieczone znaki specjalne -->
<wiadomosc>Cena: 29,99 zł & dostawa < 5 zł</wiadomosc>

<!-- ✅ Prawidłowe -->
<wiadomosc>Cena: 29,99 zł &amp; dostawa &lt; 5 zł</wiadomosc>

5. Wiele Elementów Głównych

<!-- ❌ Nieprawidłowe - wiele elementów głównych -->
<ksiazka>...</ksiazka>
<autor>...</autor>

<!-- ✅ Prawidłowe -->
<biblioteka>
  <ksiazka>...</ksiazka>
  <autor>...</autor>
</biblioteka>

XML vs Inne Formaty

XML vs JSON

  • XML: Bardziej rozwlekły, obsługuje atrybuty i przestrzenie nazw, lepszy dla dokumentów
  • JSON: Lżejszy, łatwiejszy do parsowania w JavaScript, lepszy dla API

XML vs HTML

  • XML: Rozszerzalny, ścisłe reguły składni, skoncentrowany na danych
  • HTML: Stały zestaw znaczników, bardziej wyrozumiała składnia, skoncentrowany na prezentacji

XML vs YAML

  • XML: Bardziej strukturalny, lepszy dla złożonych hierarchii
  • YAML: Bardziej czytelny dla ludzi, lepszy dla plików konfiguracyjnych

Zaawansowane Funkcje XML

1. Sekcje CDATA

<kod>
  <![CDATA[
    function przykład() {
      if (x < y && y > z) {
        return "Witaj & witamy!";
      }
    }
  ]]>
</kod>

2. Instrukcje Przetwarzania

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<dokument>
  <zawartosc>Zawartość dokumentu</zawartosc>
</dokument>

3. Komentarze

<?xml version="1.0" encoding="UTF-8"?>
<dokument>
  <!-- To jest komentarz -->
  <sekcja>
    <!-- Komentarze mogą pojawić się wszędzie -->
    <tytul>Tytuł Sekcji</tytul>
  </sekcja>
</dokument>

4. Deklaracje Encji

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dokument [
  <!ENTITY firma "TechCorp Sp. z o.o.">
  <!ENTITY copyright "&#169; 2024">
]>
<dokument>
  <stopka>&firma; &copyright;</stopka>
</dokument>

Narzędzia do Pracy z XML

1. Walidatory i Formatery

  • Narzędzia Online: XMLLint, XML Validator, XML Formatter
  • Rozszerzenia IDE: Narzędzia XML dla VS Code, IntelliJ IDEA
  • Linia Komend: xmllint, xmlstarlet

2. Biblioteki Przetwarzania

  • JavaScript: DOMParser, xml2js, fast-xml-parser
  • Python: lxml, xml.etree.ElementTree, BeautifulSoup
  • Java: JAXB, DOM4J, StAX
  • C#: XDocument, XmlDocument, XmlReader

3. Narzędzia Transformacji

  • XSLT: Przekształcanie XML do innych formatów
  • XPath: Zapytania i nawigacja po dokumentach XML
  • XQuery: Zapytania do baz danych XML

Względy Wydajnościowe

1. Duże Pliki XML

<!-- Używaj parserów strumieniowych dla dużych plików -->
<!-- Rozważ paginację dla usług internetowych -->
<wyniki strona="1" calkowite_strony="100" rozmiar_strony="50">
  <pozycja>...</pozycja>
  <!-- ... -->
</wyniki>

2. Optymalizuj Strukturę

<!-- Preferuj atrybuty dla prostych wartości -->
<produkt id="123" cena="29.99" w_magazynie="true">
  <nazwa>Książka Przewodnik XML</nazwa>
  <opis>Kompleksowy przewodnik XML...</opis>
</produkt>

3. Kompresja

  • Używaj kompresji gzip dla XML przez HTTP
  • Rozważ binarne formaty XML dla aplikacji krytycznych pod względem wydajności

Względy Bezpieczeństwa

1. Wstrzykiwanie XML

Zawsze waliduj i oczyszczaj dane wejściowe XML:

<!-- Niebezpieczne - dane użytkownika bez walidacji -->
<uzytkownik>
  <imie><![CDATA[${userInput}]]></imie>
</uzytkownik>

2. Ataki External Entity (XXE)

Wyłącz przetwarzanie encji zewnętrznych:

<!-- Niebezpieczne jeśli encje zewnętrzne są włączone -->
<!DOCTYPE korzen [
  <!ENTITY xxe SYSTEM "file:///etc/passwd">
]>
<korzen>&xxe;</korzen>

3. Atak Billion Laughs

Zapobiegaj rekurencyjnemu rozwijaniu encji:

<!-- Niebezpieczne - może spowodować odmowę usługi -->
<!DOCTYPE korzen [
  <!ENTITY lol "lol">
  <!ENTITY lol2 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">
]>

XML pozostaje fundamentalną technologią wymiany danych, zarządzania konfiguracją i przechowywania dokumentów. Zrozumienie jego składni, najlepszych praktyk i potencjalnych pułapek pomoże ci efektywnie pracować z XML w różnych aplikacjach i zapewnić, że twoje dokumenty XML są dobrze sformułowane, prawidłowe i bezpieczne.