`

小试dom对xml的操作

XML 
阅读更多
dom对xml的操作:
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.*;  
import java.io.*;
import org.w3c.dom.*;

public class control implements java.io.Serializable {
   private static String xmlStr="";
   private static int index=3;
   //private static final String PATH="file:///";
    
   public control() {
   }

   public String getString(){
        return xmlStr;
   }

   public static Document getDocument(String filename) throws Exception {
       xmlStr="";
       DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        // 设定解析的叁数
        dbf.setIgnoringComments(true);
        dbf.setIgnoringElementContentWhitespace(true);
        DocumentBuilder db = dbf.newDocumentBuilder();
        //导入XML文件
        Document doc = db.parse(filename);
        return doc;
   }
    
   public int addElement(Node node,String name,String sex,String age, String tel){

             
             Element oRoot=((Document)node).getDocumentElement();
                         
             Element ename =((Document)node).createElement("name");  
             Text tname =((Document)node).createTextNode(name); 
             ename.appendChild(tname); 

             Element esex = ((Document)node).createElement("sex");  
             Text tsex = ((Document)node).createTextNode(sex); 
             esex.appendChild(tsex); 
          
             Element eage = ((Document)node).createElement("age");  
             Text tage = ((Document)node).createTextNode(age); 
             eage.appendChild(tage); 
            
             Element etel = ((Document)node).createElement("tel");  
             Text ttel  = ((Document)node).createTextNode(tel); 
             etel.appendChild(ttel);
     
             Element stu  =((Document)node).createElement("student"); 
             stu.setAttribute("id",Integer.toString(index));
             index++;
             stu.appendChild(ename);
                      stu.appendChild(esex);
                      stu.appendChild(eage);
                      stu.appendChild(etel);
            
             oRoot.appendChild(stu); 
             save((Document)node);
             if(stu==null) return 0;
             return 1;
   }
     
   public void traverseTree(Node node) throws Exception {
         if(node == null) {
            return;
         }
         int type = node.getNodeType();

         switch (type) {

            // handle document nodes
            case Node.DOCUMENT_NODE: {
               xmlStr+="<tr>";
               traverseTree(((Document)node).getDocumentElement());
               break;
            }

            // handle element nodes
            case Node.ELEMENT_NODE: {
               String elementName = node.getNodeName();
               if(elementName.equals("student")) {
                 xmlStr+="</tr><tr>";
               }
               NodeList childNodes =node.getChildNodes();
               if(childNodes != null) {
                  int length = childNodes.getLength();
                  for (int loopIndex = 0; loopIndex <length ; loopIndex++)
                  {
                     traverseTree(childNodes.item(loopIndex));
                  }
               }
               break;
            }
            
            // handle text nodes
            case Node.TEXT_NODE: {
               String data = node.getNodeValue().trim();
               if((data.indexOf(" ")  <0) && (data.length()> 0)) {
                 xmlStr+="<td>"+data+"</td>";
               }
            }
         }
    }
        //增加的保存操作
        private void save(Document doc){
            try{
                TransformerFactory tFactory =TransformerFactory.newInstance();
                Transformer transformer = tFactory.newTransformer();
                DOMSource source = new DOMSource(doc);
                StreamResult result = new StreamResult(new java.io.File("ok.xml"));
                transformer.transform(source, result); 
            }catch(TransformerConfigurationException e)
        {
            e.printStackTrace();
        }catch(TransformerException e)
        {
           e.printStackTrace();
        }

        }
        
  public static void main(String []args){
            control ctrl = new control();
            try{
            Document doc = ctrl.getDocument("ok.xml");
            String name = "haha";
            String sex = "female";
            String age = "22";
            String tel = "23256";
            
           int i=ctrl.addElement(doc,name,sex,age,tel);
           Element oRoot=(doc).getDocumentElement();
           ctrl.traverseTree(oRoot);
           String str = ctrl.getString();
           System.out.println(str);
           
       }catch(Exception e){
        e.printStackTrace();
       }
        }
}
 
分享到:
评论

相关推荐

    jquery小试牛刀

    在Web开发领域,jQuery是一个不可或缺的JavaScript库,它极大地简化了DOM操作、事件处理、动画效果以及Ajax交互等任务。本文将深入探讨jQuery的核心概念和常见用法,帮助读者更好地理解和运用这个强大的工具。 一、...

    牛刀小试的汇编教程,很好的入门教材!

    这个“牛刀小试的汇编教程”是为初学者设计的一份入门教材,旨在帮助学习者快速理解和掌握汇编语言的基本概念和操作。 汇编语言与机器语言紧密相关,每一行汇编代码都可以直接转换成相应的机器码,执行效率高,但...

    牛刀小试C语言基础教学及实践

    数组允许存储多个相同类型的数据,而指针则可以存储变量的地址,实现对内存的直接操作。理解指针的使用和操作,如指针的声明、赋值、解引用等,对于深入理解和使用C语言至关重要。 结构体和联合体是C语言中复合数据...

    linux小试牛刀-项目开发

    在Linux系统中,项目开发往往涉及到...无论是对硬件设备的控制,还是提高系统效率,Linux驱动开发都是一个必不可少的环节。因此,这个主题的学习对于想要在Linux环境中进行项目开发的工程师来说,具有极高的实用价值。

    通达信指标公式源码 小试牛刀精髓.doc

    - 文档建议在股价放量突破前一根阴线4/5以上时买入,这反映了对价格波动的波段操作策略。同时,当股价达到高位时应保持谨慎。 6. **建仓区**: - 建仓区的计算基于VARO7,当该值小于10时,认为是适合建仓的区域,...

    XSL练习小试

    XSL(Extensible Stylesheet Language)是一种...总结来说,"XSL练习小试"是一个关于如何使用XSLT处理XML数据的实际操作。通过学习和实践,我们可以更好地掌握XSLT的语法和技巧,从而提高处理XML文档的效率和灵活性。

    Android 小试牛刀(一)

    Android 小试牛刀1 博文链接:https://huangpengxiao.iteye.com/blog/199497

    XP操作技巧之小试牛刀

    ### XP操作技巧详解 在日常使用Windows XP操作系统的过程中,掌握一些快捷键可以帮助我们更高效、更便捷地完成各种任务。本文将对给定文件中的XP技巧进行详细解析,并结合实际应用场景进行说明。 #### 一、文件...

    牛刀小试VC

    《牛刀小试VC》是一本...无论你是对编程感兴趣的学生,还是希望转行的职场新人,这本书都将引导你迈入编程的大门,开启你的VC++之旅。通过学习和实践,你将逐渐掌握这个强大工具,并能够开发出自己的Windows应用程序。

    通达信指标公式源码小试牛刀.doc

    本文件“通达信指标公式源码小试牛刀.doc”分享了一些自定义的技术指标公式,以下是对这些公式的详细解读: 1. **VAR1**:这是基于N日最低价(LLV)和最高价(HHV)计算的一个动量指标。它通过计算收盘价相对于价格...

    hibernate小试

    总的来说,这个“hibernate小试”资源提供了一个基础的Hibernate实践教程,涵盖了数据库连接配置、实体类定义、映射文件创建、以及基本的CRUD操作。对于初学者来说,这是一个很好的起点,帮助理解Hibernate的工作...

    第二周牛刀小试测试题答案1

    【知识点详解】 1. 营销漏斗理论:在描述中提到的“营销漏斗”,是指潜在...这些知识点涵盖了电商营销、谷歌广告平台的使用、营销漏斗策略以及广告优化等多个方面,对理解数字营销和谷歌广告平台的运作具有重要意义。

    cmd操作MongoDB数据库牛刀小试.pptx

    在Windows环境下,我们可以通过命令行工具CMD来操作MongoDB数据库。首先,正确安装MongoDB后,需要配置环境变量,确保系统能够找到MongoDB的可执行文件。MongoDB的默认安装路径通常是"C:\Program Files\MongoDB\...

    HTML5初学小试

    在HTML5学习中,使用jQuery可以帮助初学者更轻松地理解JavaScript和DOM操作。 4. **image**:这是一个文件夹,可能包含了用于这些HTML示例的图片资源。HTML5提供了新的图像元素和属性,如`&lt;img&gt;`元素的`srcset`和`...

    Hibernate小试牛刀

    这篇博客作者通过个人实践,分享了对Hibernate框架的理解与应用。尽管描述中没有提供具体细节,但可以推断,作者可能讲解了如何在项目中集成Hibernate,以及进行简单的数据操作。 【标签】:“源码”、“工具” ...

    JExcel / 小试牛刀

    标题中的“JExcel / 小试牛刀”表明这是一个关于使用JExcel库进行电子表格操作的实践案例。JExcel是一个Java库,它允许开发者在Java应用程序中读取、写入和修改Excel文件,极大地简化了与Excel数据交互的工作。在这...

    暴雪作业(修改,小试牛刀,大家给点意见[配有音乐)

    暴雪作业(修改,小试牛刀,大家给点意见[配有音乐)

    小试牛刀.exe

    小试牛刀.exe

Global site tag (gtag.js) - Google Analytics