xmlBean學習二,xmlbean學習

來源:互聯網
上載者:User

xmlBean學習二,xmlbean學習

 

 

由上一遍的準備工作完成後,可以很簡單的就進行對xml檔案的操作,

package com;import java.io.File;import java.io.IOException;import org.apache.xmlbeans.XmlException;import sample.xmlbean.AddressType;import sample.xmlbean.BillingAddressType;import sample.xmlbean.CustomerType;import sample.xmlbean.CustomersDocument;import sample.xmlbean.CustomersDocument.Customers;import sample.xmlbean.PrimaryAddressType;public class CustomerXMLBean  {private String fileName=null;public CustomerXMLBean(String fileName){this.fileName=fileName;}/** * 讀取xml檔案 */public void customerReader(){File file = new File(fileName);try {CustomersDocument document = CustomersDocument.Factory.parse(file);Customers customers = document.getCustomers();//System.out.println(customers);CustomerType[] types = document.getCustomers().getCustomerArray();for(CustomerType customer:types){System.out.println(customer.getId());System.out.println(customer.getGender());System.out.println(customer.getFirstname()+" "+customer.getLastname());System.out.println(customer.getPhoneNumber());AddressType address = customer.getAddress();//System.out.println(address);PrimaryAddressType primaryAddress = address.getPrimaryAddress();BillingAddressType billingAddress = address.getBillingAddress();System.out.println("---------primaryAddress----------");System.out.println(primaryAddress.getAddressLine1());System.out.println(primaryAddress.getAddressLine2());System.out.println(primaryAddress.getPostalCode());System.out.println("---------billingAddress----------");System.out.println(billingAddress.getReceiver());System.out.println(billingAddress.getPostalCode());System.out.println(billingAddress.getAddressLine1());}} catch (XmlException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 建立一個xml檔案 * @param args */public void createCustomer(){/*//建立documentCustomersDocument doc = CustomersDocument.Factory.newInstance();//添加customerCustomerType customer = doc.addNewCustomers().addNewCustomer();customer.setId(3);customer.setGender("female");customer.setFirstname("zhang");customer.setLastname("san");customer.setPhoneNumber("123456789");//添加addressAddressType address = customer.addNewAddress();//添加新的BillingAdressBillingAddressType billingAddress = address.addNewBillingAddress();billingAddress.setReceiver("lisi");billingAddress.setPostalCode("53600");billingAddress.setAddressLine1("guohui");billingAddress.setAddressLine2("E5");//添加新的PrimaryAddressPrimaryAddressType primaryAddress = address.addNewPrimaryAddress();primaryAddress.setPostalCode("23645456");primaryAddress.setAddressLine1("wanshoulu");primaryAddress.setAddressLine2("302");File file = new File(fileName);try {doc.save(file);} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}*/ try{         // Create Document<br />         CustomersDocument doc = CustomersDocument.Factory.newInstance();         // Add new customer<br />         CustomerType customer = doc.addNewCustomers().addNewCustomer();         // set customer info<br />         customer.setId(3);         customer.setFirstname("Jessica");         customer.setLastname("Lim");         customer.setGender("female");         customer.setPhoneNumber("1234567"); // Add new address<br />         AddressType address = customer.addNewAddress(); // Add new<br />         // PrimaryAddress<br />         PrimaryAddressType primaryAddress = address.addNewPrimaryAddress();         primaryAddress.setPostalCode("350106");         primaryAddress.setAddressLine1("#25-1");         primaryAddress.setAddressLine2("SHINSAYAMA 2-CHOME"); // Add new<br />         // BillingAddress<br />         BillingAddressType billingAddress = address.addNewBillingAddress();         billingAddress.setReceiver("Ms Danielle");         billingAddress.setPostalCode("350107");         billingAddress.setAddressLine1("#167");         billingAddress.setAddressLine2("NORTH TOWER HARBOUR CITY");         File xmlFile = new File(fileName);         doc.save(xmlFile);     } catch (Exception ex){         ex.printStackTrace();     }}/** * 添加一個customer節點 */ public void addNewCustomer() {          try {          File xmlFile = new File(fileName);          CustomersDocument doc = CustomersDocument.Factory.parse(xmlFile);          CustomerType customer = doc.getCustomers().addNewCustomer();       System.out.println(customer.documentProperties()+"~~~~~~~~~");        customer.setId(3);customer.setGender("female");customer.setFirstname("zhang");customer.setLastname("san");customer.setPhoneNumber("123456789");//添加addressAddressType address = customer.addNewAddress();//添加新的BillingAdressBillingAddressType billingAddress = address.addNewBillingAddress();billingAddress.setReceiver("lisi");billingAddress.setPostalCode("53600");billingAddress.setAddressLine1("guohui");billingAddress.setAddressLine2("E5");//添加新的PrimaryAddressPrimaryAddressType primaryAddress = address.addNewPrimaryAddress();primaryAddress.setPostalCode("23645456");primaryAddress.setAddressLine1("wanshoulu");primaryAddress.setAddressLine2("302");//儲存        doc.save(xmlFile);           } catch (Exception ex) {            ex.printStackTrace();           }      }   /**  * 刪除一個節點  * @param args  */ public void deleteCustomer(){ File file = new File(fileName); try {CustomersDocument doc = CustomersDocument.Factory.parse(file);CustomerType[] customers = doc.getCustomers().getCustomerArray();for (int i = 0; i < customers.length; i++) {        CustomerType customer = customers[i];        if(customer.getId()==3){                        customer.setNil() ;                        break;        }}doc.save(file);} catch (XmlException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}  }public static void main(String[] args) {// TODO Auto-generated method stubCustomerXMLBean b = new CustomerXMLBean("E:\\code\\workspace\\XmlBean\\customers.xml");CustomerXMLBean b1 = new CustomerXMLBean("E:\\code\\workspace\\XmlBean\\customers1.xml");b1.createCustomer();//b.addNewCustomer();b.deleteCustomer();b1.customerReader();b.customerReader();}

以上代碼除了刪除的以外都可以運行出來,唯獨刪除,出錯,報了以下異常:

Exception in thread "main" org.apache.xmlbeans.impl.values.XmlValueNotNillableExceptionat org.apache.xmlbeans.impl.values.XmlObjectBase.setNil(XmlObjectBase.java:624)at com.CustomerXMLBean.deleteCustomer(CustomerXMLBean.java:167)at com.CustomerXMLBean.main(CustomerXMLBean.java:187)

 經過我反編譯通過上篇使用scomp產生的jar包,發現介面中定義的setNil()方法並沒有被實現重寫,暫時沒有想出問題出在哪,或許可能因為使用的xmlBean的版本太低導致,假如有讀者也遇到問題,可以聯絡我,討論一下,找出解決方案。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.