科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道使用XKit开发XMLBeans

使用XKit开发XMLBeans

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  XMLBeans 允许你以一种友好的方式来操作 XML 文档,它是一种把 XML (可移植的数据)和 JAVA 编程语言(可移植的代码)绑定在一起的工具。它的优点在于:你可以使用 XML 和 XML Schema 灵活性来设计数据模式和接口。

作者:中国IT实验室 来源:中国IT实验室 2007年9月22日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

2. XMLBeans的使用

 确保 xbean.jar, Order.jar 在 CLASSPATH 中。清单 2 是符合 Order.xsd 的示例 XML 文档,我们将编写一个程序来统计这个订单的总费用。

  清单 2:Order.XML

<?xml version="1.0"?> 
< order xmlns =" http://www.ikigo.com/bods "> 
  < header > 
   < customer > Hitesh Seth </ customer > 
   < po > 10001 </ po > 
  </ header > 
  < lines > 
    < line > 
     < no > 1 </ no > 
     < item > Item 1 </ item > 
     < price > 100 </ price > 
     < qty > 100 </ qty > 
    </ line > 
    < line > 
     < no > 2 </ no > 
     < item > Item 2 </ item > 
     < price > 50 </ price > 
     < qty > 50 </ qty > 
    </ line > 
    < line > 
     < no > 3 </ no > 
     < item > Item 3 </ item > 
     < price > 75 </ price > 
     < qty > 75 </ qty > 
    </ line > 
  </ lines > 
</ order>

  统计订单总费用的程序为 :

  清单3:TotalPrice.java

import com.bea.xml.*;
import java.io.*; 
import com.ikigo.bods.*; 
import com.ikigo.bods.LineDocument.*; 
import com.ikigo.bods.OrderDocument.*; 
public class TotalPrice { 
 public static void main(String[] args) throws Exception { 
  OrderDocument doc = 
  (OrderDocument) OrderDocument.Factory.parse(new File("Order.xml")); 
  Order order = doc.getOrder(); 
  Line[] lines = order.getLines().getLineArray(); 
  float amt = 0; 
  for (int i = 0; i < lines.length; i++) { 
   amt += lines[i].getQty() * lines[i].getPrice(); 
  } 
  System.out.println("Order Value: " + amt); 
 } 
} 

  程序中使用了 OrderDocument.Factory.parse() 方法从磁盘文件中构造一个 OrderDocument 对象 doc ,然后通过 doc.getOrder().getLines().getLineArray() 方法得到 line 对象,并通过 FOR 循环统计订单总额。

3. XmlCursor的使用

  XmlCursor代表着 XML 文档中两个逻辑令牌之间的位置。令牌本身不作为对象暴露,但是它们的类型和属性则可以通过 XmlCursor 去引用。使用 XmlCursor ,你可以通过 execQuery() 和 selectPath() 去执行 XQuery 和 XPath 表达式,对 XML 文档作 Inserting, Moving, Copying, Removing 操作。

  使用 XmlCursor 重新改写后的 TotalPrice.java 如清单 4 所示。

  清单4:TotalPrice.java

import com.bea.xml.*;
import java.io.*; 
import com.ikigo.bods.*; 
import com.ikigo.bods.LineDocument.*; 
import com.ikigo.bods.OrderDocument.*; 
public class TotalPrice { 
 public static void main(String[] args) throws Exception { 
  OrderDocument doc = 
   (OrderDocument)OrderDocument.Factory.parse( 
    new File("Order.xml")); 
  Order order = doc.getOrder(); 
  float amt = 0; 
  XmlCursor cursor = order.getLines().newCursor(); 
  cursor. toFirstChild (); 
  do { 
   Line line = (Line)cursor.getObject(); 
   amt += line.getQty() * line.getPrice(); 
  } 
  while (cursor. toNextSibling ()); 
  System.out.println("Order Value: " + amt); 
 } 
} 

4.XQuery的使用

  使用 XmlCursor 的 execQuery () 方法可以执行 XQuery 语句。使用清单 5 的程序可以列出 Order.xml 文档中订购数量大于 50 的行。

  清单5:XQuery .java

import com.bea.xml.*; 
import java.io.*; 
import com.ikigo.bods.* 
public class XQuery { 
 public static void main(String[] args) throws Exception {
  OrderDocument doc = 
   (OrderDocument)OrderDocument.Factory.parse(new File("Order.xml")); 
  String query = " declare namespace o='http://www.ikigo.com/bods'"; 
  query += " //o:line[o:qty>50]"; 
  XmlCursor cursor = doc.newCursor().execQuery(query); 
  System.out.println(cursor.xmlText()); 
 } 
 作者简介
经乾是(dev2dev ID: jq75) BEA系统(中国)有限公司 渠道部技术顾问

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章