我下载了一个目录,它是 XML 格式的。如何将其从代码更改为人类可读的形式,并最好将其保存为纯文本文件?我以前从未工作过/见过这些;我尝试弄乱 xslproc,因为这里推荐它用于类似的事情,但无法让它工作。我成功地将它加载到 textWrangler 中,它在 XML 中正确格式化它(缩进/颜色/等),但我不知道如何实际“运行”它来打印其内容。我还尝试过 Excel、Word、记事本,但最终都出现错误。
如果还不清楚,我有这样的东西:
<TD>51.9029244701</TD>
<TD>47.0082067303</TD>
我想要这样的:
51.9029244701
47.0082067303
我想用这个目录的信息创建一个文本文件。
答案1
这里迟到的答案:Ubuntu 存储库有一个非常好的实用程序,xmlto
可以帮助您。它将 xml 转换为多种格式,包括纯文本、epub、pdf。
网上有奥克斯车库其中有很多转换选项。
答案2
我编写了一个非常简单的 Python 脚本,它将读取 xml 文件,并将其内容输出到另一个文件中:
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
将其保存为 readxml.py,然后从 shell 中调用它,如下所示$ python readxml.py input.xml output.txt
:它确实很初级,所以它可能不是您正在寻找的东西,但它是东西!
答案3
尝试这个:
grep "<TD>" yourfile.xml | awk -F "TD" '{gsub(">|</","",$0); print $2;}'
输出将是:
51.9029244701
47.0082067303
grep
选择 XMLTD标记、awk
使用TD作为分隔符并从字段中删除>
和。</
$2
为了选择所有节点,请尝试 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>
这将输出 xml 文件中所有节点的内容。
答案4
实际上这比您想象的要容易 - XML 元素有 4 个“东西” - 名称、属性、子元素和“内容”。
因此,您可以迭代所有内容元素并仅打印它们(带或不带换行符)
#!/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('//*');
这会找出所有“内容”( pcdata
) 节点,并打印它们 - 每行一个。
但实际上,当谈到 XML 时,“人类可读”才是重点。为什么不只是漂亮地打印它并保留它,这样阅读它的人就可以......好吧,阅读它,并且不会在此过程中丢失数据。
如果您愿意,可以重新格式化它:
$twig -> set_pretty_print ('indented_a');
$twig -> print;
这是“人类可读”的一个很好的近似。