首页 / XML / java-使用jaxb读取xml文档
java-使用jaxb读取xml文档
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java-使用jaxb读取xml文档,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4345字,纯文字阅读大概需要7分钟。
内容图文
我正在尝试使用jaxb读取xml,并尝试创建一个解析器.我对构造Java bean及其中的注释的方式有疑问.我知道自己做错了,因为我收到了非法的注释错误.
请问关于如何编写bean和注释以允许jax b执行此操作并解析我的xml的一些帮助.
谢谢(对很长的帖子很抱歉,但希望能对其他人有所帮助)
我的简化xml文档如下所示…
<WEB-ITM-EXT-REC>
<ACTVTY-CODE>A</ACTVTY-CODE>
<WEB-ITM-EXT-DATA>
<ITEM-NO>93501250080</ITEM-NO>
<PROMOTION-DETAILS>
<PROMOTION-ID></PROMOTION-ID>
<PROMOTION-START-DATE>0</PROMOTION-START-DATE>
<PROMOTION-END-DATE>0</PROMOTION-END-DATE>
<PROMOTION-PRICE>.00</PROMOTION-PRICE>
</PROMOTION-DETAILS>
<NORMAL-SELL-PRICES>
<SELL-PRICE-EFFECTIVE-DATE-1>0</SELL-PRICE-EFFECTIVE-DATE-1>
<SELL-PRICE-1>.00</SELL-PRICE-1>
<SELL-PRICE-EFFECTIVE-DATE-2>0</SELL-PRICE-EFFECTIVE-DATE-2>
<SELL-PRICE-2>.00</SELL-PRICE-2>
<SELL-PRICE-EFFECTIVE-DATE-3>0</SELL-PRICE-EFFECTIVE-DATE-3>
<SELL-PRICE-3>189.95</SELL-PRICE-3>
</NORMAL-SELL-PRICES>
<OUT-OF-STOCK-IND>Y</OUT-OF-STOCK-IND>
</WEB-ITM-EXT-DATA>
</WEB-ITM-EXT-REC>
这是我编写Java Bean的方式…
@XmlRootElement(name = "WEB-ITM-EXT-REC")
public class ItemDocuments {
@XmlElement(name="ACTVTY-CODE")
private String activityCode;
@XmlElement(name="WEB-ITM-EXT-DATA")
private List<ItemDocument> itemDocuments;
public List<ItemDocument> getItemDocuments() {
return itemDocuments;
}
public void setItemDocuments(List<ItemDocument> itemDocuments) {
this.itemDocuments = itemDocuments;
}
public String getActivityCode() {
return activityCode;
}
public void setActivityCode(String activityCode) {
this.activityCode = activityCode;
}
}
项豆
@XmlRootElement(name = "WEB-ITM-EXT-DATA")
@XmlAccessorType(XmlAccessType.FIELD)
public class ItemDocument {
@XmlElement(name="ITEM-NO")
private String itemNo;
private PromotionDocument promotion;
private SellPriceDocument sellPrice;
@XmlElement(name="OUT-OF-STOCK-IND")
private String outOfStockInd;
getters..
setters...
}
卖豆价
@XmlType
public class SellPriceDocument {
@XmlElement(name="SELL-PRICE-EFFECTIVE-DATE-1")
private String sellPriceEffectiveDateOne;
@XmlElement(name="SELL-PRICE-1")
private String sellPriceOne;
@XmlElement(name="SELL-PRICE-EFFECTIVE-DATE-2")
private String sellPriceEffectiveDateTwo;
@XmlElement(name="SELL-PRICE-2")
private String sellPriceTwo;
@XmlElement(name="SELL-PRICE-EFFECTIVE-DATE-3")
private String sellPriceEffectiveDateThree;
@XmlElement(name="SELL-PRICE-3")
private String sellPriceThree;
getters..
setters...
}
促销豆
public class PromotionDocument {
@XmlElement(name="PROMOTION-ID")
private String promotionId;
@XmlElement(name="PROMOTION-START-DATE")
private String promotionStartDate;
@XmlElement(name="PROMOTION-END-DATE")
private String promotionEndDate;
@XmlElement(name="PROMOTION-PRICE")
private String promotionPrice;
getters..
setters...
}
解决方法:
您已经使用@XmlRootElement注释了两个类(ItemDocuments和ItemDocument).您只能有一个@XmlRootElement(根据标准http://www.w3.org/TR/REC-xml/),因为这定义了一个文档.并查看您要生成的xml.我建议以下
@XmlRootElement(name = "WEB-ITM-EXT-REC")
@XmlAccessorType(XmlAccessType.FIELD)
public class ItemDocuments {
@XmlElement(name = "WEB-ITM-EXT-DATA")
public List<ItemDocument> itemDocumentList = new ArrayList<ItemDocument>();
public List<ItemDocument> getItemDocumentList() {
return itemDocumentList;
}
public void setItemDocumentList(List<ItemDocument> itemDocumentList) {
this.itemDocumentList = itemDocumentList;
}
}
ss
@XmlType
@XmlAccessorType(XmlAccessType.FIELD)
public class ItemDocument {
@XmlElement(name = "ITEM-NO")
private String itemNo;
public String getItemNo() {
return itemNo;
}
public void setItemNo(String itemNo) {
this.itemNo = itemNo;
}
}
这将产生像
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<WEB-ITM-EXT-REC>
<WEB-ITM-EXT-DATA>
<ITEM-NO>1111</ITEM-NO>
</WEB-ITM-EXT-DATA>
<WEB-ITM-EXT-DATA>
<ITEM-NO>2222</ITEM-NO>
</WEB-ITM-EXT-DATA>
</WEB-ITM-EXT-REC>
所以xsd看起来像
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="WEB-ITM-EXT-REC" type="itemDocuments"/>
<xs:complexType name="itemDocuments">
<xs:sequence>
<xs:element name="WEB-ITM-EXT-DATA" type="itemDocument" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="itemDocument">
<xs:sequence>
<xs:element name="ITEM-NO" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
这应该给您足够的起点.如果您在ItemDocument中使用SellpriceDocument和PromotionDocument有问题,请告诉我.
内容总结
以上是互联网集市为您收集整理的java-使用jaxb读取xml文档全部内容,希望文章能够帮你解决java-使用jaxb读取xml文档所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。