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)
什麼是綁定?以及如何使用它?
綁定定義了您的XML結構與您的Java對象的對應關係。我認爲[JiBX的綁定教程](http://jibx.sourceforge.net/binding/tutorial/binding-tutorial.html)是一個很好的開始。 – 2012-08-13 09:05:28
我看着他們,但是,我的英語很糟糕,很難閱讀這麼多的文字。我嘗試Eclipse JiBX插件。但沒有什麼改變。 – 2012-08-13 09:18:55