gpt4 book ai didi

java - 如何使用 smooks 将 xml 拆分为标题和项目?

转载 作者:行者123 更新时间:2023-12-01 15:30:52 26 4
gpt4 key购买 nike

我有一个大致如下的 xml 文件:

<batch>
<header>
<headerStuff />
</header>
<contents>
<timestamp />
<invoices>
<invoice>
<invoiceStuff />
</invoice>
<!-- Insert 1000 invoice elements here -->
</invoices>
</contents>
</batch>

我想将该文件拆分为 1000 个具有相同 headerStuff 且只有一张发票的文件。 Smooks 文档对转换的可能性感到非常自豪,但不幸的是我不想这样做。

我想出的唯一方法是在 freemarker 中重复整个结构。但这感觉就像不必要地重复该结构。 header 有大约 30 个不同的标签,因此也涉及大量工作。

我目前拥有的是:

<?xml version="1.0" encoding="UTF-8"?>
<smooks-resource-list xmlns="http://www.milyn.org/xsd/smooks-1.1.xsd"
xmlns:calc="http://www.milyn.org/xsd/smooks/calc-1.1.xsd"
xmlns:frag="http://www.milyn.org/xsd/smooks/fragment-routing-1.2.xsd"
xmlns:file="http://www.milyn.org/xsd/smooks/file-routing-1.1.xsd">

<params>
<param name="stream.filter.type">SAX</param>
</params>

<frag:serialize fragment="INVOICE" bindTo="invoiceBean" />

<calc:counter countOnElement="INVOICE" beanId="split_calc" start="1" />

<file:outputStream openOnElement="INVOICE" resourceName="invoiceSplitStream">
<file:fileNamePattern>invoice-${split_calc}.xml</file:fileNamePattern>
<file:destinationDirectoryPattern>target/invoices</file:destinationDirectoryPattern>
<file:highWaterMark mark="10"/>
</file:outputStream>

<resource-config selector="INVOICE">
<resource>org.milyn.routing.io.OutputStreamRouter</resource>
<param name="beanId">invoiceBean</param>
<param name="resourceName">invoiceSplitStream</param>
<param name="visitAfter">true</param>
</resource-config>

</smooks-resource-list>

这会为每个发票标签创建文件,但我不知道如何从那里继续将标题也包含在文件中。

编辑:

解决方案必须使用 Smooks。我们在应用程序中将其用作通用拆分器,只需为不同类型的输入文件创建不同的 smooks 配置文件。

最佳答案

我自己刚刚开始使用 Smooks。但是...您的问题听起来与此相同:http://www.smooks.org/mediawiki/index.php?title=V1.5:Smooks_v1.5_User_Guide#Routing_to_File

您必须提供完整的输出 FTL 格式,我猜这是使用通用工具的缺点。数据映射通常包含很多看似冗余的内容,解决此问题的一种方法是利用约定,但必须将其内置到框架中。

关于java - 如何使用 smooks 将 xml 拆分为标题和项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9518511/

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