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 block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 新建一个xml文件
* @param args
*/ public void createCustomer(){
/*//创建document
CustomersDocument doc = CustomersDocument.Factory.newInstance();
//添加customer
CustomerType customer = doc.addNewCustomers().addNewCustomer();
customer.setId(3);
customer.setGender("female");
customer.setFirstname("zhang");
customer.setLastname("san");
customer.setPhoneNumber("123456789");
//添加address
AddressType address = customer.addNewAddress();
//添加新的BillingAdress
BillingAddressType billingAddress = address.addNewBillingAddress();
billingAddress.setReceiver("lisi");
billingAddress.setPostalCode("53600");
billingAddress.setAddressLine1("guohui");
billingAddress.setAddressLine2("E5");
//添加新的PrimaryAddress
PrimaryAddressType 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 block
e.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");
//添加address
AddressType address = customer.addNewAddress();
//添加新的BillingAdress
BillingAddressType billingAddress = address.addNewBillingAddress();
billingAddress.setReceiver("lisi");
billingAddress.setPostalCode("53600");
billingAddress.setAddressLine1("guohui");
billingAddress.setAddressLine2("E5");
//添加新的PrimaryAddress
PrimaryAddressType 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 block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} }
public static void main(String[] args) {
// TODO Auto-generated method stub
CustomerXMLBean 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.XmlValueNotNillableException
at 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的版本太低导致,假如有读者也遇到问题,可以联系我,讨论一下,找出解决方法。
xmlBean学习二的更多相关文章
- emberjs学习二(ember-data和localstorage_adapter)
emberjs学习二(ember-data和localstorage_adapter) 准备工作 首先我们加入ember-data和ember-localstorage-adapter两个依赖项,使用 ...
- ReactJS入门学习二
ReactJS入门学习二 阅读目录 React的背景和基本原理 理解React.render() 什么是JSX? 为什么要使用JSX? JSX的语法 如何在JSX中如何使用事件 如何在JSX中如何使用 ...
- TweenMax动画库学习(二)
目录 TweenMax动画库学习(一) TweenMax动画库学习(二) TweenMax动画库学习(三) Tw ...
- Hbase深入学习(二) 安装hbase
Hbase深入学习(二) 安装hbase This guidedescribes setup of a standalone hbase instance that uses the local fi ...
- Struts2框架学习(二) Action
Struts2框架学习(二) Action Struts2框架中的Action类是一个单独的javabean对象.不像Struts1中还要去继承HttpServlet,耦合度减小了. 1,流程 拦截器 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- Quartz学习--二 Hello Quartz! 和源码分析
Quartz学习--二 Hello Quartz! 和源码分析 三. Hello Quartz! 我会跟着 第一章 6.2 的图来 进行同步代码编写 简单入门示例: 创建一个新的java普通工程 ...
- SpringCloud学习(二):微服务入门实战项目搭建
一.开始使用Spring Cloud实战微服务 1.SpringCloud是什么? 云计算的解决方案?不是 SpringCloud是一个在SpringBoot的基础上构建的一个快速构建分布式系统的工具 ...
- DjangoRestFramework学习二之序列化组件、视图组件 serializer modelserializer
DjangoRestFramework学习二之序列化组件.视图组件 本节目录 一 序列化组件 二 视图组件 三 xxx 四 xxx 五 xxx 六 xxx 七 xxx 八 xxx 一 序列化组 ...
随机推荐
- Linux C enum
/**************************************************************************** * Linux C enum * * 说明: ...
- DirectX截图黑屏的解决办法
好久没有更新博客了,今天开始继续耕耘. 生活要继续 工作要继续 梦想也一定要继续! 之前写过一篇关于DirectX截屏的文章,其中有网友留言提到了截图黑屏的问题,于是这些日子研究了一下,与大家一同分享 ...
- IOS的XML文件解析,利用了NSData和NSFileHandle
如果需要了解关于文档对象模型和XML的介绍,参看 http://www.cnblogs.com/xinchrome/p/4890723.html 读取XML 上代码: NSFileHandle *fi ...
- Oracle中HWM与数据库性能的探讨
Oracle中HWM与数据库性能的探讨 一.什么是高水位 HWM(high water mark),高水标记,这个概念在segment的存储内容中是比较重要的.简单来说,HWM就是一个segment中 ...
- Android 实现emoji表情的demo
Android 实现emoji表情的例子,网上看到的,记录一下. 请看下图 : 项目下载地址:http://download.csdn.net/detail/abc13939746593/741397 ...
- jquery生成二维码
下载Demo js下载: jquery-1.8.3.js .qrcode.js.jquery.qrcode.js <!DOCTYPE html> <html> <head ...
- hdu 3342 Legal or Not(拓扑排序) HDOJ Monthly Contest – 2010.03.06
一道极其水的拓扑排序……但是我还是要把它发出来,原因很简单,连错12次…… 题意也很裸,前面的废话不用看,直接看输入 输入n, m表示从0到n-1共n个人,有m组关系 截下来m组,每组输入a, b表示 ...
- java web 学习七(HttpServletResponse对象1)
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象.和代表响应的response对象.request和response对象即然代表请求和响应,那我们要 ...
- 关于AsyncTask 的退出
public class Task extends AsyncTask<Void, Void, Void>{ @Overrideprotected Void doInBackground( ...
- AtCoder Grand Contest 001 C Shorten Diameter 树的直径知识
链接:http://agc001.contest.atcoder.jp/tasks/agc001_c 题解(官方): We use the following well-known fact abou ...