⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 groupdomparser.java

📁 这是一个用DOM实现的XML分析器
💻 JAVA
字号:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;

import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;

import org.w3c.dom.Document;
import org.w3c.dom.DOMException;
import org.w3c.dom.Node;
import org.w3c.dom.Text;
import org.w3c.dom.Attr;
import org.w3c.dom.*;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.tree.*;
import java.io.*;

public class GroupDOMParser
{
  Document document;
  String eName;
  int num=0;
  DefaultMutableTreeNode rootNode=new DefaultMutableTreeNode("");
  DefaultMutableTreeNode docNode,eleNode,textNode,attrNode;
  DefaultMutableTreeNode insNode=new DefaultMutableTreeNode("");
  
  public GroupDOMParser(String s)
  {
  	 
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    try
    {
      DocumentBuilder builder = factory.newDocumentBuilder();
      document = builder.parse(s);      
    }
    catch(Exception e)
    {
    }
  }
  
  public void traverse(Node aNode)
  {
  	try{    	
  	switch(aNode.getNodeType())
    {      
      case Node.DOCUMENT_NODE:                   
           docNode = new DefaultMutableTreeNode(aNode.getNodeName());      
           rootNode=docNode;
           processChildren(aNode.getChildNodes());
           break;      
      case Node.ELEMENT_NODE:   
           NamedNodeMap attrList = aNode.getAttributes();             
          if(attrList.getLength()>0)
          {	        
            if(num==0)
            {
            	 eleNode = new DefaultMutableTreeNode(aNode.getNodeName()); 
            	 rootNode.add(eleNode);
            	 insNode=eleNode;
            	 num++;
            }
            else 
            {
            	eleNode = new DefaultMutableTreeNode(aNode.getNodeName()); 
            	insNode.add(eleNode);
            }                    	       
             for(int i=0; i<attrList.getLength(); i++)	     
             {
                Attr attr = (Attr)attrList.item(i);	        
                attrNode = new DefaultMutableTreeNode(attr.getNodeValue());
	            eleNode.add(attrNode); 	       
             }	              
          }
         else {
          	     DefaultMutableTreeNode node = new DefaultMutableTreeNode(aNode.getNodeName());
            	 eleNode.add(node);	        
                 docNode=node;            
               }     
        processChildren(aNode.getChildNodes());
        break;
      case Node.CDATA_SECTION_NODE:
      case Node.TEXT_NODE:        
        if(!aNode.getNodeValue().trim().equals(""))
        {
        	DefaultMutableTreeNode textNode = new DefaultMutableTreeNode(aNode.getNodeValue());
            docNode.add(textNode);            
        }
        break;
    } 
    }catch(NullPointerException e){}   	
  }
  
  private void processChildren(NodeList nList)
  {
    if(nList.getLength() != 0)
    {
      for(int i=0; i<nList.getLength(); i++)
        traverse(nList.item(i));
    }
  }
  
  public void addmember(Document document1,String a,String b,String c,String d)
  {
  	document=document1;
 	Element member=document.createElement(a);
	member.setAttribute("id",b);
 	Element name=(Element)document.createElement("name");
 	Element sex=(Element)document.createElement("sex");
 	name.appendChild(document.createTextNode(c));
 	sex.appendChild(document.createTextNode(d));
    member.appendChild(name);
    member.appendChild(sex);
    document.getDocumentElement().appendChild(member);

  }
  
  public void WriteToXml(Document document1,String filename)
	 {
	 	try
	 	{
	 		TransformerFactory tFactory=TransformerFactory.newInstance();
	 		Transformer transformer=tFactory.newTransformer();
	 		DOMSource source=new DOMSource(document1);
	 		transformer.setOutputProperty(OutputKeys.INDENT,"yes");
	 		PrintWriter pw=new PrintWriter(new FileOutputStream(filename));
	 		StreamResult result=new StreamResult(pw);
	 		transformer.transform(source,result);
	 	}
	 	catch(TransformerException te)
	 	{
	 		te.printStackTrace();
	 	}
	 	catch(IOException exp)
	 	{
	 		exp.printStackTrace();
	 	}
	 }
	 
  public void delmember(Document document1,String s)
  {
  	int i;
  	document=document1;
  	for(i=0;i<document.getChildNodes().item(2).getChildNodes().getLength();i++)
  	{
  		if(s.equals(document.getChildNodes().item(2).getChildNodes().item(i).getNodeName()))
  		{  	
  		    Node del=document.getChildNodes().item(2).getChildNodes().item(i);		
  			document.getChildNodes().item(2).removeChild(del);
  		}
  	}
  }
  
  public void modifymember(Document document1,String a,String b,String c,String d)
  {
  	int i;
  	document=document1;
  	for(i=0;i<document.getChildNodes().item(2).getChildNodes().getLength();i++)
  	{
  		String mem= document.getChildNodes().item(2).getChildNodes().item(i).getNodeName();
  		if(a.equals(mem))
  		{ 	
  		    Node modify=document.getChildNodes().item(2).getChildNodes().item(i);
  		    Element member=document.createElement(mem);
	        member.setAttribute("id",b);
 	        Element name=(Element)document.createElement("name");
 	        Element sex=(Element)document.createElement("sex");
            name.appendChild(document.createTextNode(c));
 	        sex.appendChild(document.createTextNode(d));
            member.appendChild(name);
            member.appendChild(sex);		
  			document.getChildNodes().item(2).replaceChild(member,modify);
  		}
  	}
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -