将.xml转换为.csv提要
因此,我尝试转换.xml数据源: 转换为.csv格式,但格式如下 我有重复的元素,如“title”、“description”等,我想将它们从完全垂直的xml格式中提取出来,并将每个元素分解成一个单独的列 我已经找到了一个我相信可以做到这一点,但我不知道如何设置它 我有两个文件-a.bat和.jar。在.bat中,我们有以下默认代码:将.xml转换为.csv提要,xml,csv,Xml,Csv,因此,我尝试转换.xml数据源: 转换为.csv格式,但格式如下 我有重复的元素,如“title”、“description”等,我想将它们从完全垂直的xml格式中提取出来,并将每个元素分解成一个单独的列 我已经找到了一个我相信可以做到这一点,但我不知道如何设置它 我有两个文件-a.bat和.jar。在.bat中,我们有以下默认代码: java-jarxml2csv-conv.jar%* 我不知道该如何修改这个。有人能提供一些建议吗?我不确定频道部分是否重复,但项目部分显然是重复的。要将其转
java-jarxml2csv-conv.jar%*
我不知道该如何修改这个。有人能提供一些建议吗?我不确定频道部分是否重复,但项目部分显然是重复的。要将其转换为一个健全的CSV结构,您需要知道重复的
s的数量。因为您需要知道必须提供多少列
无论如何-在您的案例中,数据的结构是这样的:键的名称是标记的名称,其内容是值
我的建议是尝试将XPath应用于您的情况,如下所示:
<root>
<record id="1">
<keyA>val_1A</keyA>
<keyB>val_1B</keyB>
</record>
<record id="2">
<keyA>val_2A</keyA>
<keyB>val_2B</keyB>
</record>
<record id="3">
<keyA>val_3A</keyA>
<keyB>val_3B</keyB>
</record>
</root>
您可以在以下教程中找到更多示例和解释:
您可以编写非常简单的Python脚本,使用Python标准库中的CSV模块读取XML并写入CSV
xml\u to\u csv.py
:
import argparse
导入csv
从lxml导入etree
导入系统
def main():
p=argparse.ArgumentParser()
p、 添加参数(“xml文件”)
args=p.parse_args()
xml_str=open(args.xml_文件'rb').read()
root=etree.XML(XML\u str)
w=csv.DictWriter(
sys.stdout,
字段名=“”
标题说明链接
''.split())
w、 写头()
对于root.findall(“./channel/item”)中的项:
行={
“标题”:项。查找(“./title”)。文本,
“说明”:项。查找(“./description”)。文本,
“链接”:item.find(“./link”).text,
}
w、 writerow(世界其他地区)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()
feed.xml
:
<?xml version="1.0" encoding="iso-8859-1" ?>
<rss version="0.91">
<channel>
<title>Delphi Programming</title>
<item>
<title>How to draw rotated text</title>
<link>http://delphi.about.com/1234.html</link>
<description>This example creates...</description>
</item>
<item>
<title>FutureValue function</title>
<link>http://delphi.about.com/5678.html</link>
<description>Returns the future...</description>
</item>
</channel>
</rss>
在输入文件上运行批处理文件的结果是什么?这正是问题所在。我觉得自己像个傻瓜,因为我无法让它在我的文件(名为feed1.xml)上运行。链接中的文档说明使用
xml2csv-conv-feed1.xml-feed1.csv
——这不起作用吗?但这不会启动工具附带的.jar文件。然后使用另一种命令形式:java-jar xml2csv-conv-conv.jar[-options]
,或者在您的例子中,java-jarxml2csv-conv.jar feed1.xml feed1.csv
<?xml version="1.0" encoding="iso-8859-1" ?>
<rss version="0.91">
<channel>
<title>Delphi Programming</title>
<item>
<title>How to draw rotated text</title>
<link>http://delphi.about.com/1234.html</link>
<description>This example creates...</description>
</item>
<item>
<title>FutureValue function</title>
<link>http://delphi.about.com/5678.html</link>
<description>Returns the future...</description>
</item>
</channel>
</rss>
$ pip install lxml # if needed
$ python3 xml_to_csv.py feed.xml
title,description,link
How to draw rotated text,This example creates...,http://delphi.about.com/1234.html
FutureValue function,Returns the future...,http://delphi.about.com/5678.html