xml的四种解析方法及源代码(SAXDOMJDOMDOM4J)
import java.io.FileInputStream;
l.sax.InputSource;
l.sax.XMLReader;
l.sax.helpers.XMLReaderFactory;
public class SaxParserTest
{
  public static void main(String[] args)
  {
    try
    {
      XMLReader ateXMLReader();
      //关闭或打开验证
      xmlReader.setFeature("/sax/features/validation",true);
      //注册事件处理器
      xmlReader.setContentHandler(new ContentHandlerImpl());
      //注册异常处理器
      xmlReader.setErrorHandler(new ErrorHandlerImpl());
     
      xmlReader.parse(new InputSource(new FileInputStream("l")));
    } catch (Exception e)
    {
      System.out.Message());
    }
  }
}
第二种:DOM解析
DOM中的核心概念就是节点。DOM在分析XML文档时,将将组成XML文档的各个部分(元素、属性、文本、注释、处理指令等)映射为一个对象(节点)。在内存中,这些节点形成一课文档树。整棵树是一个节点,树中的每一个节点也是一棵树(子树),可以说,DOM就是对这棵树的一个对象描述,我们通过访问树中的节点来存取XML文档的内容。
PS:属性节点是附属于元素的,不能被看做是元素的子节点,更不能作为一个单独的节点
DOMPrinter.java
Java代码
import org.w3c.dom.Document;   
import org.w3c.dom.NamedNodeMap;   
import org.w3c.dom.Node;   
 
import s.internal.parsers.DOMParser;   
 
java xml是什么public class DOMPrinter   
{   
  public static void main(String[] args)   
  {   
    try 
    {   
      /** *//** 获取Document对象 */ 
      DOMParser parser = new DOMParser();   
      parser.parse("db.xml");   
      Document document =&Document();   
      printNode(document);   
    } catch (Exception e)   
    {   
      e.printStackTrace();   
    }   
  }   
     
  public static void printNode(Node node)   
  {   
    short NodeType();   
    switch(nodeType)   
    {   
    case Node.PROCESSING_INSTRUCTION_NODE://预处理指令类型   
      printNodeInfo(node);   
      break;   
    case Node.ELEMENT_NODE://元素节点类型   
      printNodeInfo(node);   
      printAttribute(node);   
      break;   
    case Node.TEXT_NODE://文本节点类型   
      printNodeInfo(node);   
      break;   
    default:   
      break;   
    }   
       
    Node FirstChild();   
    while(child!=null)   
    {   
      printNode(child);   
      NextSibling();   
    }   
  }   
     
  /** *//** 
   * 根据节点类型打印节点 
   * @param node 
   */ 
  public static void printNodeInfo(Node node)   
  {   
    if (NodeType() == Node.ELEMENT_NODE)   
    {   
      System.out.println("NodeName: " +&NodeName());   
    }   
    else if (NodeType() == Node.TEXT_NODE)   
    {   
      String value =&NodeValue().trim();   
      if (!value.equals(""))   
        System.out.println("NodeValue: " + value);   
      else 
        System.out.println();   
    }else 
    {   
      System.out.NodeName()+" : "+NodeValue());   
    }   
  }   
     
  /** *//** 
   * 打印节点属性 
   * @param aNode 节点 
   */ 
  public static void printAttribute(Node aNode)   
  {   
    NamedNodeMap attrs =&Attributes();   
    if(attrs!=null)   
    {   
      for (int i = 0; i <&Length(); i++)   
      {   
        Node attNode = attrs.item(i);   
        System.out.println("Attribute: " +&NodeName() + "=\"" +&NodeValue()+"\"");   
      }   
    }   
  } 
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import s.internal.parsers.DOMParser;
public class DOMPrinter
{
  public static void main(String[] args)
  {
    try
    {
      /** *//** 获取Document对象 */
      DOMParser parser = new DOMParser();
      parser.parse("db.xml");
      Document document = Document();
      printNode(document);
    } catch (Exception e)
    {
      e.printStackTrace();
    }
  }
 
  public static void printNode(Node node)
  {
    short NodeType();
    switch(nodeType)
    {
    case Node.PROCESSING_INSTRUCTION_NODE://预处理指令类型
      printNodeInfo(node);
      break;
    case Node.ELEMENT_NODE://元素节点类型
      printNodeInfo(node);
      printAttribute(node);
      break;
    case Node.TEXT_NODE://文本节点类型
      printNodeInfo(node);
      break;
    default:
      break;
    }
   
    Node FirstChild();
    while(child!=null)
    {
      printNode(child);
      NextSibling();
    }
  }
 
  /** *//**
  * 根据节点类型打印节点
  * @param node
  */
  public static void printNodeInfo(Node node)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。