Java: 玩转schema+xmlbeans (2)
2004-10-14 22:31
387 查看
手写xml是个很痛苦的事情,手写schema更痛苦.即使用xmlspy,还是有些东西写不出来,比如复杂的数据限制.
xmlbeans是bea捐赠给apache的根据schema生成Java Bean的工具.上面的schema通过编译:
scomp -src src test.xsd
生成如下类:(注意package是xsd的targetNamespace,可以通过配置文件调整)
public interface Gender extends org.apache.xmlbeans.XmlString
Arenumber area = Arenumber.Factory.newInstance();
area.setStringValue("0467");
System.out.println(area);
System.out.println("验证结果:"+area.validate());
Gender gender = Gender.Factory.newInstance();
gender.setStringValue(Gender.女.toString());
System.out.println(gender);
System.out.println("验证结果:"+gender.validate());
ChineseName cn = ChineseName.Factory.newInstance();
cn.setStringValue("李");
System.out.println(cn);
System.out.println("验证结果:"+cn.validate());
运行结果:
<xml-fragment>
0467
</xml-fragment>
验证结果:true
<xml-fragment>
女
</xml-fragment>
验证结果:true
<xml-fragment>
李
</xml-fragment>
验证结果:false
注意:
ChineseName的验证结果为false,因为长度不符合.
因为schemaType只描述数据,<xml-fragment>只是匿名容器
除了上面的newInstance()和validate()方法,还有一些其它实用方法:
Gender.Factory.newValue(Object);//生成新实例
Gender.Factory.parse(File);
Gender.Factory.parse(Reader);
Gender.Factory.parse(InputStream);
Gender.Factory.parse(Node);
Gender.Factory.parse(URL);
Gender.Factory.parse(String);
cn.newDomNode(); //生成DOM
cn.newInputStream(); //生成InputStream
cn.newReader(); //生成Reader
cn.xmlText(); //生成xml文本
cn.schemaType(); //拿到编译后的Schema.用途稍后再说
cn.save(File);
cn.save(Writer);
cn.save(OutputStream);
cn.selectPath("some/path[here='where']"); //xpath
xmlbeans是bea捐赠给apache的根据schema生成Java Bean的工具.上面的schema通过编译:
scomp -src src test.xsd
生成如下类:(注意package是xsd的targetNamespace,可以通过配置文件调整)
public interface Gender extends org.apache.xmlbeans.XmlString
Arenumber area = Arenumber.Factory.newInstance();
area.setStringValue("0467");
System.out.println(area);
System.out.println("验证结果:"+area.validate());
Gender gender = Gender.Factory.newInstance();
gender.setStringValue(Gender.女.toString());
System.out.println(gender);
System.out.println("验证结果:"+gender.validate());
ChineseName cn = ChineseName.Factory.newInstance();
cn.setStringValue("李");
System.out.println(cn);
System.out.println("验证结果:"+cn.validate());
运行结果:
<xml-fragment>
0467
</xml-fragment>
验证结果:true
<xml-fragment>
女
</xml-fragment>
验证结果:true
<xml-fragment>
李
</xml-fragment>
验证结果:false
注意:
ChineseName的验证结果为false,因为长度不符合.
因为schemaType只描述数据,<xml-fragment>只是匿名容器
除了上面的newInstance()和validate()方法,还有一些其它实用方法:
Gender.Factory.newValue(Object);//生成新实例
Gender.Factory.parse(File);
Gender.Factory.parse(Reader);
Gender.Factory.parse(InputStream);
Gender.Factory.parse(Node);
Gender.Factory.parse(URL);
Gender.Factory.parse(String);
cn.newDomNode(); //生成DOM
cn.newInputStream(); //生成InputStream
cn.newReader(); //生成Reader
cn.xmlText(); //生成xml文本
cn.schemaType(); //拿到编译后的Schema.用途稍后再说
cn.save(File);
cn.save(Writer);
cn.save(OutputStream);
cn.selectPath("some/path[here='where']"); //xpath
相关文章推荐
- Java: 玩转schema+xmlbeans
- Java: 玩转schema+xmlbeans (1)
- XMLBeans应用:将Schema转变成Java代码
- XMLBeans应用:将Schema转变成Java代码
- Java-三-玩转九九乘法口诀表-170531(循环)
- Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed, do
- Java多线程开发系列之四:玩转多线程(线程的控制2)
- 玩转java多线程学习篇三 线程的状态以及Thread类的API
- Java调用Schema校验xml文件
- 如何使用XMLBeans兼容Java与XML应用开发
- java.lang.ClassNotFoundException:org.apache.ws.commons.schema.resolver.URIResolver
- java(优化12) 15天玩转redis之第六篇
- 【翻译】玩转Java的hashCode()与equals()方法
- Validation with Java and XML Schema
- JAXB中Schema2Java自定义绑定
- Java程序员从笨鸟到菜鸟之(二十五)XML之Schema验证
- “玩转”Java系列—CSS层叠样式表
- 带你玩转JavaWeb之六-Mysql数据库
- XML Java与 XMLBeans结合应用的商业价值
- “玩转”Java系列—参悟Java基础核心技术