Pular para o conteúdo principal

Visualizar XML

O Visualizador de XML mostra um documento como uma árvore recolhível no seu navegador. A árvore é virtualizada, então uma resposta SOAP grande ou um sitemap abre na mesma velocidade de um pequeno, e os atributos são exibidos de forma distinta dos elementos filhos — é essa distinção que torna um documento XML desconhecido legível.

Só local
0 elementos · 0 atributos · profundidade 0
Documento XML
0 B1 linhaLin. 1, Col. 1
Cole um documento XML válido ou clique em “Carregar exemplo” para ver a árvore.

Como funciona o Visualizar XML?

Ninguém abre um visualizador de XML para um documento de vinte linhas. As pessoas abrem para uma resposta SOAP, um sitemap, um SVG, um POM do Maven ou um arquivo de configuração grande demais para ler como texto e aninhado demais para acompanhar com os marcadores de dobra de um editor de texto. Então a única pergunta que importa é o que acontece quando o tamanho cresce.

A árvore é virtualizada, então o tamanho quase não importa

A implementação óbvia renderiza um componente por nó, o que significa que um documento de cinquenta mil nós produz cinquenta mil elementos DOM, dos quais talvez quarenta estejam visíveis. A rolagem engasga e a aba consome centenas de megabytes. Aqui o documento é primeiro achatado em um array de linhas — cada uma carregando a sua profundidade, o seu tipo e onde a sua subárvore termina — e só as linhas dentro do viewport são renderizadas. O DOM fica com cerca de cinquenta elementos, não importa o tamanho do documento.

Registrar onde cada subárvore termina é o que torna recolher barato: esconder um ramo é uma comparação de índice, e não uma caminhada por tudo o que está dentro dele. Recolher a raiz de um documento enorme é instantâneo.

Atributos são exibidos separados dos elementos

O XML tem dois tipos de membro, e a maioria dos visualizadores os achata em um só, o que perde a distinção entre <line sku="X"/> e <line><sku>X</sku></line>. Os atributos aparecem sob um prefixo @, então ambos sobrevivem e nenhum sobrescreve o outro — o que importa, porque um elemento que carrega ao mesmo tempo um atributo e um elemento filho com o mesmo nome é comum em vocabulários reais.

A busca cobre o documento inteiro, não só a parte aberta

Uma ocorrência enterrada em uma subárvore recolhida é encontrada e exibida, com todos os ancestrais do caminho até ela, porque um valor sem o caminho dele não diz nada sobre de onde veio.

Entrada malformada é identificada, não adivinhada

Tags mal emparelhadas e elementos não fechados geram um erro que identifica a tag e a linha. XML truncado é a coisa mais comum que alguém cola em um visualizador — é justamente por isso que a pessoa está olhando para ele —, então um visualizador que renderiza algo plausível a partir de um documento quebrado atrapalha de verdade.

A visualização formatada é separada e sem perdas: reidenta sem tocar no conteúdo, preservando CDATA, comentários, instruções de processamento e o texto exato dentro dos elementos.

XML

<order id="1"><line sku="A" qty="2"/></order>

Árvore

▾ order        { 2 }
    @id        "1"
  ▾ line       { 2 }
      @sku     "A"
      @qty     "2"

Quais opções e casos-limite o Visualizar XML suporta?

Referência técnica e opções
ParâmetroTipoPadrãoComportamento e casos-limite
Virtualizaçãoapenas o viewport—Cerca de cinquenta linhas existem no DOM a cada momento, independentemente do tamanho do documento. É a diferença entre abrir um log SOAP de 10 MB e travar a aba.
Atributosprefixo @exibidosMantidos distintos dos elementos filhos, então um elemento com um atributo sku e um filho sku mostra os dois, em vez de um vencer em silêncio.
Nós de texto#textexibidosO texto do elemento aparece em sua própria linha em vez de ser colapsado dentro do elemento, então um elemento com texto e filhos mostra os dois.
Comentários#commentexibidosMantidos, porque um comentário em um arquivo de configuração costuma ser a única documentação de por que um valor é o que é.
CDATAliteral—Exibido tal como está. Entidades dentro de uma seção CDATA não são entidades — e essa é justamente a graça da construção.
Namespacespreservadosprefixo mantidosoap:Body continua soap:Body, e as declarações xmlns aparecem como atributos. Removê-los fica disponível no conversor de XML para JSON, onde é uma escolha de conversão, não de exibição.
Buscasubcadeiasem diferenciar maiúsculas de minúsculasEncontra nomes e valores em todo o documento, incluindo os ramos recolhidos, e mantém todos os ancestrais de cada ocorrência para que o caminho continue visível.
Entrada malformadaerronomeadoTags sem par ou não fechadas são relatadas com o nome da tag e a linha. A árvore continua mostrando o último documento válido em vez de apagar enquanto você digita.
Tamanho da entradabytes8 MBA tokenização roda na thread principal. Acima do limite, a ferramenta recusa em vez de congelar; a árvore em si aguenta muito mais nós do que esse limite permite.

Perguntas frequentes

Ele abre uma resposta SOAP grande ou um sitemap?

Até o teto de 8 MB, e a árvore não é o gargalo — ela renderiza só o que está na tela, então o número de nós quase não a afeta. O limite é o tokenizador, que roda na thread principal e recusa acima de 8 MB em vez de tentar, porque tentar travaria a aba por segundos.

Por que algumas linhas começam com @?

São os atributos. O XML tem atributos e elementos filhos; árvores em forma de JSON têm um só tipo de membro, então os atributos recebem um prefixo para ficar distintos. Sem o prefixo, um elemento que carrega tanto um atributo sku quanto um elemento filho sku exibiria só um deles, e você não teria como saber qual.

Posso editar o XML aqui?

Você pode editar o painel de texto e a árvore acompanha, mas a árvore em si é somente leitura. Mantê-la somente leitura é o que permite continuar rápida em documentos com os quais uma árvore editável sofreria — uma árvore editável precisa reconciliar duas fontes de verdade a cada tecla. Para reidentar, use a visualização formatada ou o Formatador de XML.

Meu documento está inválido. Por que a árvore ainda mostra algo?

Porque ela mostra a última versão que parseou, então uma tecla digitada no meio da edição não apaga a visualização inteira. O banner de erro nomeia a tag mal emparelhada ou não fechada e a linha dela. Quando o documento volta a parsear, a árvore se atualiza.

A visualização formatada muda o meu documento?

Ela muda o espaço em branco entre elementos e nada mais. Conteúdo de texto, seções CDATA, comentários, instruções de processamento e valores de atributo são preservados byte a byte. Saiba que o espaço em branco entre elementos é significativo para um parser XML estrito, então o documento reidentado nem sempre é intercambiável com o original para uma máquina — só para uma pessoa.

Meu XML é enviado?

Não. Tokenizar e renderizar acontecem ambos na aba que você já tem aberta — abra o DevTools, observe o painel Network e cole. Isso importa para XML mais do que para a maioria dos formatos: o que as pessoas realmente precisam ler é tráfego SOAP, asserções SAML e mensagens financeiras, ou seja, parte do material mais sensível que uma pessoa desenvolvedora manuseia.