将.xml转换为.csv提要

将.xml转换为.csv提要,xml,csv,Xml,Csv,因此,我尝试转换.xml数据源: 转换为.csv格式,但格式如下 我有重复的元素,如“title”、“description”等,我想将它们从完全垂直的xml格式中提取出来,并将每个元素分解成一个单独的列 我已经找到了一个我相信可以做到这一点,但我不知道如何设置它 我有两个文件-a.bat和.jar。在.bat中,我们有以下默认代码: java-jarxml2csv-conv.jar%* 我不知道该如何修改这个。有人能提供一些建议吗?我不确定频道部分是否重复,但项目部分显然是重复的。要将其转

因此,我尝试转换.xml数据源:

转换为.csv格式,但格式如下

我有重复的元素,如“title”、“description”等,我想将它们从完全垂直的xml格式中提取出来,并将每个元素分解成一个单独的列

我已经找到了一个我相信可以做到这一点,但我不知道如何设置它

我有两个文件-a.bat和.jar。在.bat中,我们有以下默认代码:

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