2012-08-13 59 views
0

我嘗試做示例代碼如何用JiBX讀取XML文檔?

public class xml_class { 
    /** 
    * Unmarshal the sample document from a file, compute and set order total, then 
    * marshal it back out to another file. 
    * 
    * @param args 
    */ 
    public static void main(String[] args) { 
     try { 

      // unmarshal customer information from file 
      IBindingFactory bfact = BindingDirectory.getFactory(test.Order.class); 
      IUnmarshallingContext uctx = bfact.createUnmarshallingContext(); 
      FileInputStream in = new FileInputStream("D:/liferay-develop/data1.xml"); 
      Order order = (Order)uctx.unmarshalDocument(in, null); 

      // compute the total amount of the order 
      float total = 0.0f; 
      for (Iterator<Item> iter = order.getItems().iterator(); iter.hasNext();) { 
       Item item = iter.next(); 
       total += item.getPrice() * item.getQuantity(); 
      } 
      order.setTotal(new Float(total)); 

      // marshal object back out to file (with nice indentation, as UTF-8) 
      IMarshallingContext mctx = bfact.createMarshallingContext(); 
      mctx.setIndent(2); 
      FileOutputStream out = new FileOutputStream("D:/liferay-develop/out.xml"); 
      mctx.setOutput(out, null); 
      mctx.marshalDocument(order); 
      System.out.println("Processed order with " + order.getItems().size() + 
       " items and total value " + total); 
     } catch (FileNotFoundException e) { 
      e.printStackTrace(); 
      System.exit(1); 
     } catch (JiBXException e) { 
      e.printStackTrace(); 
      System.exit(1); 
     } 
    } 
} 

,並得到一個錯誤:

Unable to access binding information for class test.Order 
Make sure the binding has been compiled 
java.lang.NoSuchFieldException: JiBX_bindingList 
at java.lang.Class.getDeclaredField(Unknown Source) 
at org.jibx.runtime.BindingDirectory.getBindingList(BindingDirectory.java:68) 
at org.jibx.runtime.BindingDirectory.getFactory(BindingDirectory.java:211) 
at test.xml_class.main(xml_class.java:31) 

什麼是綁定?以及如何使用它?

+0

綁定定義了您的XML結構與您的Java對象的對應關係。我認爲[JiBX的綁定教程](http://jibx.sourceforge.net/binding/tutorial/binding-tutorial.html)是一個很好的開始。 – 2012-08-13 09:05:28

+0

我看着他們,但是,我的英語很糟糕,很難閱讀這麼多的文字。我嘗試Eclipse JiBX插件。但沒有什麼改變。 – 2012-08-13 09:18:55

回答