gpt4 book ai didi

java - 将 XML 转换为其他格式?

转载 作者:行者123 更新时间:2023-12-01 14:35:55 24 4
gpt4 key购买 nike

解析以下 XML 的最简单方法是什么?

<Fruit>
<FruitId>Bannana</FruitId>
<FruitColor>Yellow</FruitColor>
<FruitShape>Moon</FruitShape>
<Customer>
<Name>Joe</Name>
<Numbereaten>5</NumberEaten>
<Weight>2.6</Weight>
</Customer>
<Customer>
<Name>Mark</Name>
<Numbereaten>8</NumberEaten>
<Weight>5.0</Weight>
</Customer>
</Fruit>
<Fruit>

......

假设我有一个包含多个的 XML 文件,并且我想提取信息,以便我可以制作一个仅对应于特定字段(水果 ID)和所有字段(吃过的数量和重量对,不包括客户姓名)的 csv,我会如何做完成这个?理想情况下,我希望能够获得一些代表以下内容的数据结构或 csv:

Bannana, 5, 2.6
Bannana, 8, 5
...
Apple 6, 5
Apple 3, 2

我知道有用于 Java 的 DOMParser 和 SAXParser,但我想知道在当今时代是否有其他语言或其他方法可以轻松获取此信息(在 2013 年)可以简化此操作。或者甚至能够捕获某些包含某些内容的字典数据结构中的数据:

Bannana: [5,2.6], [8,5]

这样它就可以轻松地以可编程迭代和提取的方式进行组织。

最佳答案

这是 XSLT 的典型用例。

对于您的示例,XSLT 文件将如下所示:

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="text" encoding="ISO-8859-1" />
<xsl:variable name="newline" select="'&#xA;'"/>
<xsl:template match="Fruit">
<xsl:for-each select="Customer">
<xsl:value-of select="preceding-sibling::FruitId" />
<xsl:text>,</xsl:text>
<xsl:value-of select="Numbereaten" />
<xsl:text>,</xsl:text>
<xsl:value-of select="Weight" />
<xsl:value-of select="$newline" />
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>

对于转换,您可以使用以下 java 代码:

   Source xmlSource = new StreamSource(new File("xmlFile"));
Source xsltSource = new StreamSource(new File("xsltFile"));
Transformer transformer = TransformerFactory.newInstance().newTransformer();
StreamResult csvResult = new StreamResult(new File("file.csv"));
transformer.transform(xmlSource, csvResult);

XSLT版本的好处是java代码非常短。 XSLT 文件可以保留在代码之外,并且可以在 XML 文件更改时轻松调整。

关于java - 将 XML 转换为其他格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16489667/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com