所以我试图转换一个. xml数据源:
转换成. csv但以这种格式格式化
我有重复的元素,比如“title”、“description”等,我想将它们从完全垂直的xml格式中提取出来,并将每个元素分解成一个单独的列。
我发现了一个工具,我相信它确实可以做到这一点,但我不知道如何设置它
我有两个文件——a。蝙蝠和。罐子在内部。bat我们有以下默认代码:
java-jarxml2csv-conv.jar%*
我不知道该怎么修改这个。有谁能提供一些建议吗?
您可以编写非常简单的Python脚本,它使用lxml读取XML,并使用Python标准库中的CSV模块写入CSV。
xml_to_csv.py代码:
import argparse
import csv
from lxml import etree
import sys
def main():
p = argparse.ArgumentParser()
p.add_argument('xml_file')
args = p.parse_args()
xml_str = open(args.xml_file, 'rb').read()
root = etree.XML(xml_str)
w = csv.DictWriter(
sys.stdout,
fieldnames='''
title description link
'''.split())
w.writeheader()
for item in root.findall('./channel/item'):
row = {
'title': item.find('./title').text,
'description': item.find('./description').text,
'link': item.find('./link').text,
}
w.writerow(row)
if __name__ == '__main__':
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>
用法:
$ 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
我不确定频道部分是否在重复,但项目部分显然在重复。要将其转化为一个健全的CSV结构,您需要知道重复的
无论如何——在您的案例中,数据的结构是这样的:键的名称是标记的名称,其内容是值。
我的建议是尝试将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>
使用xmlstarlet,您可以解析这个XML文档(test.XML):
xmlstarlet \
sel -T -t -m /root/record \
-v "concat(@id,';',keyA,';',keyB)" \
-n test.xml
1;val_1A;val_1B
2;val_2A;val_2B
3;val_3A;val_3B
您可以在以下教程中找到更多示例和解释:
使用XMLStarlet将XML文档转换为CSV
问题内容: 我在使用Python将XML文件转换为CSV时遇到很多麻烦。我看过很多论坛,都尝试过lxml和xmlutils.xml2csv,但是我无法使其正常工作。这是来自Garmin GPS设备的GPS数据。 这是我的XML文件的样子,当然是缩短了: 我的大型XML文件中有几个trk标记,但我可以设法将它们分开-它们代表GPS设备上的不同“段”或行程。我想要的只是一个CSV文件,它绘制了以下内容
问题内容: 我有一组CSV数据要转换为XML。代码看起来不错,但是输出不够完美。它忽略了一些列,因为它们没有值,并且产生了很长的XML数据行,而不是破坏它。 这是我的CSV数据示例: 而我的代码: 当对以上数据执行此代码时,将产生: 我本人以这种形式安排它,但是输出结果很长。产生的输出应为: 问题答案: 我同意Kennet。 我只是添加了 这在元素之间添加了新行,并允许缩进。 更新 首先,我们要介
问题内容: 什么是转换不同的方法来,我知道有一个选项,但想知道是什么其他可用于相同? 注意: 我没有进一步的要求,因此我不能在这个问题上添加更多内容,但是在此时,如果我能知道有哪些不同的方法可用于转换,那将非常棒。 更新: 建议的不同方法是: javax.xml.bind.Marshaller和javax.xml.bind.Unmarshaller XStream的 XMLBean jaxb ca
问题内容: @Before可能会有一些重复的问题建议,我不认为可能是这种情况,请先阅读本章,我会尽量简短。标题给出了基本思路。 这是一个XML示例(案例1): 这是一个XML示例(案例2): 我从Google借用了这种XML,无论如何,我的对象并不总是相同的,有时还有像case2这样的额外元素。现在,我想从两种情况下生成这样的CSV: 这第一行是标头,它也应包含在csv中。我今天有一些有用的指向s
问题内容: 有人知道将SGML转换为XML的方法或库吗? 编辑:为澄清起见,我必须在Java中进行转换,并且无法使用SP解析器或相关的SX工具。 问题答案: 似乎普遍的共识是,没有可用的Java进行SGML工作的库。毫无疑问,经过几天无能为力的搜索Google并在这里提出这个问题之后,我没有找到有关此主题的资源。
问题内容: 是否有在Ruby中将XML转换为JSON的库? 问题答案: 一个简单的把戏: 首先,您需要,然后在使用Rails时可以执行以下操作: 如果您不使用Rails,则可以要求它,并且事情应该顺利进行。 例: