xml与Object的直接转化(JAXB)详解

首先要用Altova XMLSpy软件生成一个.xsd的文件,具体做法如下:

因为在项目开发很多地方需要用到xsd文件做模板转换对应java实体对象,所以我们有必要知道如何通过xmlspy这个非常方便的工具进行xml的转换工作。
点击“File”-“New”系统会弹出“create new document”的窗口,此时选择“xml XML document”点击“ok”,并选择“Schema”单选框。粘贴你的样本xml。

样板xml内容如下:
 

 

<?xml version=”1.0″ encoding=”UTF-8″?>

<datas>

<data>

<storageDate>String</storageDate>

<goodsName>String</goodsName>

<passNo>String</passNo>

<spec>String</spec>

<form>String</form>

<goodsManu>String</goodsManu>

<prodLot>String</prodLot>

<prodDate>String</prodDate>

<validateDate>String</validateDate>

<count>String</count>

<unitName>String</unitName>

<storeName>String</storeName>

</data>

<data>

<storageDate>String</storageDate>

<goodsName>String</goodsName>

<passNo>String</passNo>

<spec>String</spec>

<form>String</form>

<goodsManu>String</goodsManu>

<prodLot>String</prodLot>

<prodDate>String</prodDate>

<validateDate>String</validateDate>

<count>String</count>

<unitName>String</unitName>

<storeName>String</storeName>

</data>

</datas>

 

此时,点击“DTD/Schema”-“Generate DTD/Schema”,选择“W3C Schema”其他选项如下图所示:

点击“ok”,就完成了xsd文件的生成。

-------------------------------------------------------

下面开始将.xsd的文件转化成对象,具体方法如下:

到jaxb网站上下载Jaxb的最新安装包,如JAXB -2_1_9.解压后含有jaxb_ri.

我将生成的.xsd文件和jaxb-ri(工具文件,附件中提供)文件拷到了E盘下(方面操作),然后在cmd中运行如下命令:

E: 回车 

cd jaxb-ri回车

cd bin回车

xjc -d f:Workspace\sNewWorkspace\JaxbProject\src -p com.lf e:\person.xsd回车

-d表示生成文件的目录

-p表示java类所在的包路径

e:\person.xsd表示.xsd文件所在的路径

就可以生成相应的JavaBean实体类了。

下面即使使用实体类了:

JAXBContext jc;
  try {
   jc = JAXBContext.newInstance("com.lf");
   Unmarshaller u = jc.createUnmarshaller();
   InputStream in;
   in = new FileInputStream("src\\person.xml");
   Persons persons = (Persons) u.unmarshal(in);
   in.close();
   List<Person> personList = persons.getPerson();
   for (int i = 0; i < personList.size(); i++) {
    Person person=personList.get(i);
       System.out.println("personName:"+person.getName());
   }
  } catch (JAXBException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }  catch (FileNotFoundException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
嗯  一切ok了

你可能感兴趣的:(xml,object,JAXB,职场,休闲)