【问题标题】:Error in JAXB unmarshallingJAXB 解组时出错
【发布时间】:2014-10-13 11:31:42
【问题描述】:

我创建了一个非常基本的 XML 来理解 JAXB 概念。这是 XML 文件

    <?xml version='1.0' encoding='UTF-8' standalone='yes'?>

    <Abc>

        <Module> India </Module>

     </Abc> 

创建的 Java 类是,

package oracle.ERP.Cloud.Client2;

import java.util.ArrayList;  
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlElementWrapper;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

//Below annotation defines root element of XML file
@XmlRootElement
public class Abc{

 private String Module;

 public String getModule() {
   System.out.println("Hi");
  return Module;
 }

 @XmlElement
 public void setModule(String Module) {
  this.Module = Module;
 }

}

用于 Unmarshalling 的 Java 文件是

package oracle.ERP.Cloud.client2;

import java.io.File;

import java.io.PrintStream;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Unmarshaller;

import oracle.ERP.Cloud.Client2.Abc;
import oracle.ERP.Cloud.client.Country;

public class JAXBXMLToJava {

    public static void main(String Args[]) {
      try {
        JAXBContext jaxbContext = JAXBContext.newInstance(new Class[]{oracle.ERP.Cloud.Client2.Abc.class});
        Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
        File XMLFile = new File("C:\\Users\\NRENTALA\\Desktop\\Analysis\\AbcXML.xml");
        oracle.ERP.Cloud.Client2.Abc summary = oracle.ERP.Cloud.Client2.Abc)unmarshaller.unmarshal(XMLFile);
        System.out.println("Country Name is : "+ summary.getModule());
      }

      catch(JAXBException e) {
           e.printStackTrace();
      }
    }
}

当我尝试编译时,我得到了这个错误

    javax.xml.bind.UnmarshalException: unexpected element (uri:"", local:"Abc"). Expected elements are <{}abc>

请帮我找出问题所在??第一次尝试。

【问题讨论】:

  • 为什么你的代码在 oracle 的包中?你是如何生成你的类的?
  • 你能发布 oracle.ERP.Cloud.Client2.Abc 总结吗?

标签: java xml jaxb


【解决方案1】:

XML 区分大小写,因此如果您的架构指定要称为“abc”的根元素(如错误消息所示),它将无法解析“Abc”。看看this question

要实现不区分大小写的解析,请查看 Blaise Doughan 的 this blog,他是 JAXB 规范和实现背后的人之一。

【讨论】:

  • 非常感谢。它解决了这个问题。但是如果 XML 元素包含所有大写字母怎么办?我们如何解析这样的 XML。我实际上需要解析一个全是大写字母的 XML。
  • 知道了。再次感谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-27
  • 1970-01-01
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 2018-12-31
相关资源
最近更新 更多