服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

使用dom解析器解析xml

import java.io.ioexception;

import javax.xml.parsers.documentbuilder;
import javax.xml.parsers.documentbuilderfactory;
import javax.xml.parsers.parserconfigurationexception;

import org.w3c.dom.document;
import org.w3c.dom.node;
import org.w3c.dom.nodelist;
import org.xml.sax.errorhandler;
import org.xml.sax.inputsource;
import org.xml.sax.saxexception;
import org.xml.sax.saxparseexception;

public class domdump {
  static public void main(string[] arg) {
    string filename = null;
    boolean validate = false;

    if (arg.length == 1) {
      filename = arg[0];
    else if (arg.length == 2) {
      if (!arg[0].equals("-v"))
        usage();
      validate = true;
      filename = arg[1];
    else {
      usage();
    }

    documentbuilderfactory dbf = documentbuilderfactory.newinstance();
    dbf.setvalidating(validate);
    dbf.setnamespaceaware(true);
    dbf.setignoringelementcontentwhitespace(true);

    // parse the input to produce a parse tree with its root
    // in the form of a document object
    document doc = null;
    try {
      documentbuilder builder = dbf.newdocumentbuilder();
      builder.seterrorhandler(new myerrorhandler());
      inputsource is = new inputsource(filename);
      doc = builder.parse(is);
    catch (saxexception e) {
      system.exit(1);
    catch (parserconfigurationexception e) {
      system.err.println(e);
      system.exit(1);
    catch (ioexception e) {
      system.err.println(e);
      system.exit(1);
    }

    // use a treedumper to list the tree
    treedumper td = new treedumper();
    td.dump(doc);
  }

  private static void usage() {
    system.err.println("usage: domcheck [-v] <filename>");
    system.exit(1);
  }
}
class treedumper {
    public void dump(document doc) {
        dumploop((node)doc,"");
    }
    private void dumploop(node node,string indent) {
        switch(node.getnodetype()) {
        case node.cdata_section_node:
            system.out.println(indent + "cdata_section_node");
            break;
        case node.comment_node:
            system.out.println(indent + "comment_node");
            break;
        case node.document_fragment_node:
            system.out.println(indent + "document_fragment_node");
            break;    case node.document_node:
            system.out.println(indent + "document_node");
            break;
        case node.document_type_node:
            system.out.println(indent + "document_type_node");
            break;
        case node.element_node:
            system.out.println(indent + "element_node");
            break;
        case node.entity_node:
            system.out.println(indent + "entity_node");
            break;
        case node.entity_reference_node:
            system.out.println(indent + "entity_reference_node");
            break;
        case node.notation_node:
            system.out.println(indent + "notation_node");
            break;
        case node.processing_instruction_node:
            system.out.println(indent + "processing_instruction_node");
            break;
        case node.text_node:
            system.out.println(indent + "text_node");
            break;
        default:
            system.out.println(indent + "unknown node");
            break;
        }

        nodelist list = node.getchildnodes();
        for(int i=0; i<list.getlength(); i++)
            dumploop(list.item(i),indent + "   ");

    }
}
class myerrorhandler implements errorhandler {
  public void warning(saxparseexception ethrows saxexception {
    show("warning", e);
    throw (e);
  }

  public void error(saxparseexception ethrows saxexception {
    show("error", e);
    throw (e);
  }

  public void fatalerror(saxparseexception ethrows saxexception {
    show("fatal error", e);
    throw (e);
  }

  private void show(string type, saxparseexception e) {
    system.out.println(type + ": " + e.getmessage());
    system.out.println("line " + e.getlinenumber() " column "
        + e.getcolumnnumber());
    system.out.println("system id: " + e.getsystemid());
  }
}

扫描关注微信公众号