Por que os formatos de texto são necessários?

Os formatos de texto são convenientes para armazenar informações porque podem ser criados e processados ​​por programas e humanos.

Arquivos de texto (arquivos em formato de texto) podem ser abertos, lidos e editados em uma ampla variedade de editores de texto.

Muitos programas usam arquivos de configuração baseados em texto, mesmo que o formato contenha números e valores binários (sim/não).

Isso torna os programas um pouco mais complicados devido à necessidade de converter de texto para um formato interno e vice-versa, mas permite editar a configuração manualmente sem usar uma ferramenta de configuração no próprio programa.

Onde o XML é usado agora?

XML é usado em várias áreas de TI. Podem ser arquivos de configuração (com configurações do programa) ou arquivos usados ​​para transferir dados entre programas. Em Java, um dos casos de uso mais comuns é configurar o Maven, uma ferramenta de automação de construção.

Estrutura de um documento XML

As estruturas físicas e lógicas de um documento XML são mantidas separadas. Em termos de estrutura física, o documento é composto por entidades que podem referenciar outras entidades.

O único elemento raiz é a entidade do documento. Uma entidade é a menor parte de um documento. Todas as entidades têm um nome e contêm caracteres.

Por sua vez, os caracteres pertencem a uma de duas categorias: dados de caracteres ou marcações.

A marcação inclui:

  • tags, que denotam os limites dos elementos;
  • declarações e instruções de processamento, incluindo seus atributos;
  • referências de entidades;
  • comentários;
  • sequências de caracteres envolvendo seções CDATA.

Logicamente, o documento consiste em elementos, comentários, declarações, referências a entidades e instruções de processamento. A marcação é usada para criar toda essa estrutura em um documento.

Todas as partes constituintes de um documento são divididas em um prólogo e um elemento raiz. O elemento raiz é a parte obrigatória e essencial de um documento XML, enquanto o prólogo pode não existir. O elemento raiz pode consistir em elementos aninhados, dados de caracteres e comentários. Os elementos de um documento devem ser aninhados corretamente: qualquer elemento que comece dentro de outro elemento também deve terminar dentro desse elemento.

Símbolos de marcação

A marcação sempre começa com < e termina com > .

Os símbolos < e > (colchetes angulares) e & (e comercial) desempenham um papel especial. Os colchetes angulares indicam os limites dos elementos, instruções de processamento e algumas outras sequências. E o e comercial nos ajuda a substituir texto por entidades.

declaração XML

Uma declaração XML especifica a versão da linguagem usada para escrever o documento. A especificação XML diz para iniciar um documento com uma declaração XML porque a interpretação adequada do conteúdo do documento depende da versão da linguagem.

Na primeira versão da linguagem (1.0), essa declaração era opcional, mas é obrigatória nas versões posteriores. Presume-se que uma declaração ausente signifique a versão 1.0. A declaração também pode conter informações sobre a codificação do documento.

Exemplo:

<?XML version="1.1" encoding="UTF-8" ?>

Tag

Uma tag é uma construção de marcação que contém o nome de um elemento. Existem tags iniciais e tags finais. Também existem tags de elemento vazio que combinam elementos iniciais e finais.

Exemplos:

  • Marca de início: <tag1>

  • Tag final: </tag1>

  • Tag de elemento vazio: <empty_tag1 />

Atributos

Outra parte dos elementos XML são os atributos. Um elemento pode ter vários atributos exclusivos. Os atributos nos permitem especificar mais informações sobre um elemento. Ou, mais precisamente, os atributos definem as propriedades dos elementos.

Um atributo é sempre um par nome-valor:

nome = "valor"

Exemplo de um atributo em uma tag:

<tag1 nome = "valor">elemento</tag1>

O valor de um atributo deve ser colocado entre aspas duplas ( " ) ou aspas simples ( ' ). Os atributos são usados ​​apenas em tags iniciais e nas tags de elemento vazio.

Escapando cinco caracteres especiais (<, >, ', ”, &)

Obviamente, os símbolos < , > e & não podem ser usados ​​como tal em dados de caracteres e valores de atributos. Você precisa de sequências de escape especiais para representá-los. Sequências especiais também são usadas ao escrever apóstrofos e aspas dentro de valores de atributos:

Símbolo Substituição
< <
> >
& &
' '
" "

Além disso, para escrever o caractere \ , você precisa usar \\ .

Seção CDATA

Uma seção CDATA não é uma unidade lógica de texto. Este tipo de seção pode ocorrer onde a sintaxe XML nos permite colocar dados de caracteres no documento.

A seção começa com <![CDATA[ e termina com ]]> . Dados de caracteres são colocados entre esses bits de marcação e os símbolos < , > e & podem ser usados ​​em sua forma direta.

Comentários

Comentários não são considerados dados de personagem. Um comentário começa com <!-- e termina com --> . A sequência de caracteres -- não pode ser usada dentro de um comentário. Além disso, dentro de um comentário, o caractere e comercial não denota marcação.

Exemplo:

<!-- isto é um comentário -->

nomes

Em XML, todos os nomes podem conter apenas letras na tabela de caracteres Unicode, algarismos arábicos, pontos, dois-pontos, hífens e sublinhados. Os nomes podem começar com uma letra, dois pontos ou sublinhado. Observe que um nome não pode começar com a string XML .

Exemplo

Vejamos uma classe Java e um objeto dessa classe. Em seguida, tentaremos serializar o objeto no formato XML. Código da classe:


public class Book {
   private String title;
   private String author;
   private Integer pageCount;
   private List<String> chapters;

   public Book(String title, String author, Integer pageCount, List<String> chapters) {
       this.title = title;
       this.author = author;
       this.pageCount = pageCount;
       this.chapters = chapters;
   }
// Getters/setters
}

e criação de objetos:


Book book = new Book("My Favorite Book", "Amigo", 999, Arrays.asList("Chapter 1", "Chapter 2", "Chapter 3", "Chapter 4", "Chapter 5", "Chapter 6"));

Aqui está um exemplo de uma representação XML válida de um objeto Java que contém 4 campos, um dos quais é uma coleção (veja o código Java acima):

<Book>
  <title>Meu livro favorito</title>
  <author>Amigo</author>
  <pageCount>999</pageCount>
 <chapters>
    <chapters>Capítulo 1</chapters>
    <chapters>Capítulo 2</chapters>
    <chapters>Capítulo 3</chapters>
    <chapters>Capítulo 4</chapters>
    <chapters>Capítulo 5</chapters>
    <chapters>Capítulo 6</chapters>
 </chapters>
</Livro>

esquema XML

Um esquema XML é a descrição da estrutura de um documento XML. A especificação correspondente (XML Schema Definition, ou XSD) é uma recomendação do W3C.

O XSD foi projetado para expressar as regras que um documento XML deve seguir. Mas o mais interessante para nós é que o XSD foi projetado para ser usado no desenvolvimento de software que processa documentos XML. Ele nos permite verificar a exatidão de um documento XML programaticamente.

Os arquivos que contêm um esquema XML têm a extensão .xsd. Projetar um esquema XML está além do escopo desta lição, portanto, por enquanto, esteja ciente de que existe essa possibilidade.