频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

使用SDO跟踪XML数据的变化

来源: 作者:佚名 出处:巧巧读书 2008-02-29 进入讨论组
上一页 1 2 3 4 

    四、通过一个不同的实体浏览数据的变化

    XML数据处理的第三部分需要完成两个任务:

    1. 程序需要按着编辑顺序打印出主要的信息。

    2. 显示处理阶段所有的修改记录。

    当我们可以更进一步根据着一个记录变化阶段编辑订购单时,这部分显示了如何使用ReviewPO.java调用所有的编辑记录。ReviewPO.java的代码如下:

  

 package com.company.sdo.po;
import java.io.FileInputStream;
import java.util.List;
import commonj.sdo.ChangeSummary;
import commonj.sdo.DataObject;
import commonj.sdo.helper.XMLDocument;
import commonj.sdo.helper.XMLHelper;
public class ReviewPO {
public static void main(String[] args) throws Exception {
Util.definePOTypes();
FileInputStream fis = new FileInputStream(Constants.PO_PROCESSED_XML);
//1. 装载要处理的订购单
          XMLDocument xmlDoc = XMLHelper.INSTANCE.load(fis);
DataObject purchaseOrder = xmlDoc.getRootObject();
//2.  显示被编辑的订购单的信息
          System.out.println();
System.out.println("---received purchase order information---");
System.out.println("Order date: " + purchaseOrder.get("orderDate"));
System.out.println("Order comment: " + purchaseOrder.get("comment"));
DataObject shipTo = purchaseOrder.getDataObject("shipTo");
System.out.println("Ship to name: ");
Util.printDataObject(shipTo,1);
DataObject billTo = purchaseOrder.getDataObject("billTo");
System.out.println("Bill to name: ");
Util.printDataObject(billTo,1);
DataObject items = purchaseOrder.getDataObject("items");
List itemList = items.getList("item");
System.out.println("Ordered items: ");
for (int i = 0; i < itemList.size(); i++) {
DataObject item = (DataObject) itemList.get(i);
System.out.println("\tItem " + (i+1) + " :" );
Util.printDataObject(item,2);
}
//3.  显示了第二阶段的数据变化
          System.out.println();
System.out.println("---review changes in purchase order ---");
ChangeSummary chngSum = purchaseOrder.getChangeSummary();
Util.printChangeSummary(chngSum);
//4.  取消第二阶段的所有变化
          System.out.println();
System.out.println("---action taken after reviewing the changes---");
System.out.println("\t###undo all changes###");
chngSum.undoChanges();
//5. 编辑订购单的原始版本
          System.out.println();
System.out.println("---changes made in purchase order review---");
chngSum.beginLogging();
billTo.set("name", "Alice Smith");
chngSum.endLogging();
//6.  将新的变化输出到系统控制台
          Util.printChangeSummary(chngSum);
//7.  将改变记录保存到一个XML文件中
          Util.storeXML(purchaseOrder,"purchaseOrder", Constants.PO_REVIEWED_XML);
}
}

    要注意的是第二个任务不同于在前一部分打印ChangeSummary,在这里printout是直接基于ChangeSummary的。变化细节在运行时被重新装载。我们可以通过比较这两个printout来分辨它们的不同。在上一部分,printDataObject()在删除项时什么都没产生,而是调用了printDeletedProperty()来列出它们的属性和它们的值。在当前的printout中,恰恰相反。

    在程序的其他部分,注释4通过调用undoChanges方法取消了在第二阶段的所有的变化,注释5对订购单做了一些小的变化。我们可以看看保存变化记录的文件(po_reviewed.xml)来验证这些操作结果。

   巧巧读书:http://www.qqread.com/java/2008/02/u399263.html

更多文章 更多内容请看XML详解开发应用专题,或进入讨论组讨论。
上一页 1 2 3 4 
收藏此文】【 】【打印】【关闭
相关图文阅读
频道图文推荐
健 康 咨 询
时 尚 咨 询
巧巧读书宗旨
相关专题
讨论组问题推荐
站内各频道最新更新文档
站内最新制作专题
热门关键字导读
Photoshop教 程照片处理 照片制作 PS快捷键 抠图
计 算 机 故 障XP系统修复
艺 术 与 设 计设计 流媒体 设计欣赏 边框
计 算 机 安 全ARP
站内频道文章精选
巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章