【发布时间】:2019-05-15 06:38:21
【问题描述】:
我是 JAXB 转换的新手。我的标签以<DataSet> 开头,但我需要在<NewDataSet> 标签中访问来自<TABLE> 的数据。任何确切的建议或如果有任何问题请帮助我。
我也尝试了很多转换,但没有得到确切的解决方案。
<?xml version="1.0" encoding="utf-8"?>
<DataSet xmlns="http://www.test.com">
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Table">
<xs:complexType>
<xs:sequence>
<xs:element name="ID" type="xs:decimal" minOccurs="0" />
<xs:element name="NAME" type="xs:string" minOccurs="0" />
<xs:element name="ADDRESS" type="xs:string" minOccurs="0" />
<xs:element name="PIN" type="xs:decimal" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
<NewDataSet xmlns="">
<Table diffgr:id="Table1" msdata:rowOrder="0">
<ID>1</ID>
<NAME>Rajesh</NAME>
<ADDRESS>Pune</ADDRESS>
<PIN>412411</PIN>
</Table>
<Table diffgr:id="Table2" msdata:rowOrder="1">
<ID>2</ID>
<NAME>Ajinkya</NAME>
<ADDRESS>Mumbai</ADDRESS>
<PIN>412504</PIN>
</Table>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
我的java代码是-
File file = new File("/home/raj/Desktop/info.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(NewDataSet.class);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
NewDataSet dType = (NewDataSet) unmarshaller.unmarshal(file);
得到以下异常:
javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"DataSet"). Expected elements are <{}NewDataSet>
【问题讨论】:
-
我不明白你到底想说什么@M.Deinum?你明白我的问题了吗,如果没有,请在这里评论。我将尝试详细解释。我刚开始提问。
-
你只在这里转储了一个 XSD,你甚至没有尝试过(至少从你的问题中没有显示出来)处理传入的 XML 的东西。
-
好的@M.Deinum,你的意思是我应该添加我的java代码,我也尝试过处理这个xml数据。实际上,如果我要添加所有代码,这将是一个大文件,所以我直接问了这个。可能有人有好的建议。
-
我已经使用这个命令
xjc -d src -p com.test.jaxb.beans test.xsd从我的xml中给定的xsd生成了类。