解析文件SearchBean.java
package com.css.util.query;import com.css.db.*;
import org.apache.commons.digester.Digester;
import java.io.*;
import java.util.*;
import java.sql.*;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.css.wlzj.vo.query.*;//search
public class SearchBean {
    private String tableName;    private static Log log = LogFactory.getLog(SearchBean.class);    public SearchBean() {
    }    public String getString() {
        String resXML = "";
        try {
            Digester searchDigester = new Digester();
         searchDigester.setValidating(true);
//            digester.setValidating(false);         searchDigester.addObjectCreate("query", SearchVO.class);
         searchDigester.addSetProperties("query");         searchDigester.addObjectCreate("query/tables", Vector.class);
         searchDigester.addSetNext("query/tables", "setTables");            searchDigester.addObjectCreate("query/tables/table", TableVO.class);
            searchDigester.addSetProperties("query/tables/table");
            searchDigester.addSetNext("query/tables/table", "addElement");            searchDigester.addObjectCreate("query/fields", Vector.class);
            searchDigester.addSetNext("query/fields", "setFields");            searchDigester.addObjectCreate("query/fields/field", FieldVO.class);
            searchDigester.addSetProperties("query/fields/field");
            searchDigester.addSetNext("query/fields/field", "addElement");
            searchDigester.addObjectCreate("query/wheres", Vector.class);
            searchDigester.addSetNext("query/wheres", "setWheres");            searchDigester.addObjectCreate("query/wheres/conditions", WhereVO.class);
            searchDigester.addSetProperties("query/wheres/conditions");
            searchDigester.addSetNext("query/wheres/conditions", "addElement");
            searchDigester.addObjectCreate("query/wheres/conditions/condition", ConditionVO.class);
            searchDigester.addSetProperties("query/wheres/conditions/condition");
            searchDigester.addSetNext("query/wheres/conditions/condition", "addCondition");
            searchDigester.addObjectCreate("query/orders", Vector.class);
            searchDigester.addSetNext("query/orders", "setOrders");            searchDigester.addObjectCreate("query/orders/order", OrderVO.class);
            searchDigester.addSetProperties("query/orders/order");
            searchDigester.addSetNext("query/orders/order", "addElement");            SearchVO svo = (SearchVO) searchDigester.parse("e:/test.xml");
            String id = "";
            .....................................
 }xml文件:test.xml
<?xml version="1.0" encoding="UTF-8"?>
<query id="reXML" currentPage="1" resPerPage="10">
<tables>
<table name="zj_biz_tkst"/>
</tables>
<fields>
<field name="stid" transName="stid"/>
<field name="tkid" transName="tkid"/>
<field name="lsh" transName="lsh"/>
<field name="nr1" transName="nr1"/>
</fields>
<wheres>
<conditions type="0">
<condition name="nr1" value="" type="1" matchType="0"/>
</conditions>
<conditions type="0">
<condition name="tkid" value="" type="1" matchType="0"/>
</conditions>
</wheres>
<orders>
<order name="lsh" type="0"/>
</orders>
</query>执行后出错:
30 五月 2006 21:01:23 ERROR org.apache.commons.digester.Digester - Parse Error at line 1 column 89: Document root element "query", must match DOCTYPE root "null".
org.xml.sax.SAXParseException: Document root element "query", must match DOCTYPE root "null".
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
。。
at java.lang.Thread.run(Unknown Source)
30 五月 2006 21:01:23 ERROR org.apache.commons.digester.Digester - Parse Error at line 1 column 89: Document is invalid: no grammar found.
org.xml.sax.SAXParseException: Document is invalid: no grammar found.
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(Unknown Source)