Resposta tardia aqui: O repositório do Ubuntu tem um utilitário muito bom chamado xmlto
que pode ajudá-lo. Ele converte xml em vários formatos, incluindo texto simples, epub, pdf.
On-line, há Oxgarage que tem muitas opções de conversão.
Eu baixei um catálogo e está no formato XML. Como mudá-lo do código para o formato legível e, idealmente, salvá-lo como um arquivo de texto simples? Eu nunca trabalhei / vi isso antes; Eu tentei mexer com xslproc como foi recomendado aqui para coisas um pouco semelhantes, mas não consegui fazê-lo funcionar. Eu carreguei com sucesso em textWrangler, que formata corretamente (recuos / cores / etc) em XML, mas eu não vejo como posso realmente 'executá-lo' para imprimir seu conteúdo. Eu também tentei o Excel, Word, Notepad e acabei com erros.
Se isso não estava claro, eu tenho coisas assim:
<TD>51.9029244701</TD>
<TD>47.0082067303</TD>
e eu quero assim:
51.9029244701
47.0082067303
Eu quero criar um arquivo de texto com as informações deste catálogo.
Resposta tardia aqui: O repositório do Ubuntu tem um utilitário muito bom chamado xmlto
que pode ajudá-lo. Ele converte xml em vários formatos, incluindo texto simples, epub, pdf.
On-line, há Oxgarage que tem muitas opções de conversão.
Eu escrevi um script Python muito simples que leria em um arquivo xml e enviava seu conteúdo para outro arquivo:
import sys
inFile = open(sys.argv[1], 'r')
outFile = open(sys.argv[2], 'w')
read = True
for i in inFile.read():
if i == '<':
read = not read
if read:
outFile.write(i)
if i == '>':
read = not read
Salve isso como readxml.py e, em seguida, chame-o do shell da seguinte forma: $ python readxml.py input.xml output.txt
. É realmente rudimentar, então pode não ser exatamente o que você está procurando, mas é alguma coisa!
Tente isto:
grep "<TD>" yourfile.xml | awk -F "TD" '{gsub(">|</","",$0); print $2;}'
a saída será:
51.9029244701
47.0082067303
grep
selecione xml tag TD , awk
use TD como separador e remova >
e </
do campo $2
.
Para selecionar todo o nó, tente a transformação xslt:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text" indent="yes"/>
<xsl:template match="node()">
<xsl:value-of select="." />
</xsl:template>
</xsl:stylesheet>
Isto irá mostrar o conteúdo de todos os nós no seu arquivo xml.
Isso é mais fácil do que você pensa - elementos XML têm 4 'coisas' - um nome, atributos, filhos e 'conteúdo'.
Assim, você pode iterar todos os elementos de conteúdo e apenas imprimi-los (com ou sem um avanço de linha)
#!/usr/env/perl
use strict;
use warnings;
use XML::Twig;
my $twig = XML::Twig -> parsefile ( 'your_file');
print $_ -> text."\n" for grep { $_ -> is_pcdata } $twig -> get_xpath('//*');
Isso detecta todos os nós de 'conteúdo' ( pcdata
) e os imprime - um por linha.
Mas, na verdade, quando se trata de XML, "legível por humanos" é uma questão importante. Por que não apenas imprimi-lo e deixá-lo assim, então a leitura humana pode ... bem, lê-lo e não perder os dados no processo.
Você pode reformatá-lo se quiser:
$twig -> set_pretty_print ('indented_a');
$twig -> print;
Qual é uma boa aproximação de 'legível por humanos'.
Tags xml text-formatting