我有许多不同的xml文档,它们基本上没有相同的结构,我需要对它们进行解析或将它们编组到一个java对象中。这些xml文档来自不同的api。
java对象如下所示: xml文档位于java对象的下面
@XmlRootElement(name = "ABF")
public class QuoteOffer {
@XmlElement(name = "QUOTEID")
private String quoteId;
@XmlElement(name = "CHARGE")
private Float charge;
@XmlElement(name = "SHIPDATE")
private Date shipDate;
@XmlElement(name = "EFFECTIVEDATE")
private Date effectiveDate;
@XmlElement(name = "EXPIRATIONDATE")
private Date expirationDate;
@XmlElement(name = "ORIGTERMINFO")
private List<OrigTermInfo> origTermInfo;
@XmlElement(name = "DESTTERMINFO")
private List<DestTermInfo> destTermInfo;xml文档如下所示
<?xml version="1.0"?>
<ABF>
<QUOTEID>LS1N9F2601</QUOTEID>
<CHARGE>166.08</CHARGE>
<DISCOUNTPERCENTAGE></DISCOUNTPERCENTAGE>
<ADVERTISEDTRANSIT>1 Day</ADVERTISEDTRANSIT>
<ADVERTISEDDUEDATE>2021-05-06</ADVERTISEDDUEDATE>
<SHIPDATE>2021-05-05</SHIPDATE>
<EFFECTIVEDATE>2021-05-05</EFFECTIVEDATE>
<EXPIRATIONDATE>2021-05-11</EXPIRATIONDATE>
<CODFEE></CODFEE>
<TPDELIVERYCHARGE></TPDELIVERYCHARGE>
<TPCHARGEPERBOX></TPCHARGEPERBOX>
<ORIGTERMINFO>
<ORIGTERMADDRESS>4242 IRVING BLVD</ORIGTERMADDRESS>
<ORIGTERMCITY>DALLAS</ORIGTERMCITY>
<ORIGTERMSTATE>TX</ORIGTERMSTATE>
<ORIGTERMZIP>75247</ORIGTERMZIP>
<ORIGTERMPHONE>2146880448</ORIGTERMPHONE>
<TYPE>DIRECT</TYPE>
</ORIGTERMINFO>
<DESTTERMINFO>
<DESTTERMADDRESS>4410 S. JACKSON</DESTTERMADDRESS>
<DESTTERMCITY>TULSA</DESTTERMCITY>
<DESTTERMSTATE>OK</DESTTERMSTATE>
<DESTTERMZIP>74107</DESTTERMZIP>
<DESTTERMPHONE>9184460122</DESTTERMPHONE>
<TYPE>DIRECT</TYPE>为了更容易阅读,xml和java对象的代码被截断。java对象将被修复。如果某些字段为空,那么就让它为空。我面临的问题是xml文档将具有不同的@XmlRootElement
1- (有20个不同的java对象来满足20个不同的xml文档是没有意义的,因为每个java对象只能有一个@XmlRootElement(name = "ABF"),这会导致问题)
2- @XmlElement只能与相应的XML文档相同,因此在一个java字段上使用不同的@XmlElement也没有意义。
我的问题是,有没有人知道应该使用什么技术将多个xml文档值编组到一组java对象中。
我在一个java循环中遇到了xml解析和子节点。显然,我尝试过使用jaxb编组到java对象中,但这不起作用。有没有人能给我指引正确的方向,这样我才能读懂更多。
谢谢
发布于 2021-09-18 22:12:56
我建议对传入的文档进行XSLT转换,以便在JAXB处理之前将它们转换为通用格式。
在处理可变的XML文档结构方面,XSLT比JAXB灵活得多。
发布于 2021-09-22 18:39:59
DSM库正是解决了这一问题。你应该看看。
https://stackoverflow.com/questions/69238032
复制相似问题