XML解析代码课堂讲解实例
    //获取所有的子元素,不包括回车
package com.dom4jDemo;
import java.io.File;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
public class Dom4jDemo1 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String path = "src/scores.xml";
        File file = new File(path);
        SAXReader saxReader = new SAXReader();
        try {
            Document doc = saxReader.read(file);
            Element root = doc.getRootElement();
            //获取所有的子元素,不包括回车
            List<Element> eles = root.elements();
            for(Element ele : eles){
                System.out.println(ele.getName());
                List<Element> children = ele.elements();
                for(Element e : children){
                    System.out.println(e.getName() + "\t" + e.getText());
                }
            }
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }   
}
DOM4j
``package com.dom4jDemo;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dom4jDemo2 {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String path = "src/scores.xml";
        File file = new File(path);
        SAXReader saxReader = new SAXReader();
        try {
            Document doc = saxReader.read(file);
            //获取根元素
            Element root = doc.getRootElement();
            //获取一个指定名字的子元素
            Element eleStu = root.element("student");
            //复制节点
            Element newStu = (Element) eleStu.clone();
            //获取子元素并设置值
            newStu.element("id").setText("5");
            newStu.element("name").setText("孙七");
            newStu.element("lesson").setText("hibernate");
            newStu.element("score").setText("92");
            root.add(newStu);
            //删除节点
            root.remove(eleStu);
            //设置输出编码
            OutputFormat of = OutputFormat.createCompactFormat();
            of.setEncoding("GBK");
            //构建输出流对象
            XMLWriter xw
            = new XMLWriter(new FileWriter(file),of);
            xw.write(doc);
            xw.close();
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
package com.dom;
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.Element; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 
import org.xml.sax.SAXException;
public class DomDemo {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    //文件路径
    String path = "src/scores.xml";
    //创建解析器工厂
    DocumentBuilderFactory dbf
     = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = null;
    try {//使用解析器工厂创建解析器
        db = dbf.newDocumentBuilder();
        //将XML文件映射成文档对象
        Document doc = db.parse(path);
        //根元素
        Element root = doc.getDocumentElement();
        System.out.println(root.getNodeName());
        //获取所有的子元素,包含换行和标签元素
        NodeList children = //root.getChildNodes();
                //获取标签名为student的元素集合,不包括换行
                root.getElementsByTagName("student");
        for(int i = 0; i < children.getLength();i++){
            Node node = children.item(i);
            //跳过换行
//              if(node.getNodeType() == Node.TEXT_NODE){ 
//                  continue; 
//              } 
                System.out.println(node.getNodeName() + “\t” + node.getNodeValue()); 
                Element ele = (Element)node; 
                //获取子元素的子元素 
                NodeList childNodes = ele.getChildNodes(); 
                for(int j = 0;j < childNodes.getLength();j++){ 
                    Node n = childNodes.item(j); 
                    if(n.getNodeType() == Node.TEXT_NODE){ 
                        continue; 
                    } 
                    System.out.println(n.getNodeName() + “\t” + n.getTextContent()); 
                } 
                System.out.println(childNodes.getLength()); 
            } 
            System.out.println(“子元素的数量:” + children.getLength()); 
        } catch (ParserConfigurationException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } catch (SAXException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 
    }
}
package com.dom;
import java.io.FileOutputStream; 
import java.io.IOException;
import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory; 
import javax.xml.parsers.ParserConfigurationException; 
import javax.xml.transform.OutputKeys; 
import javax.xml.transform.Transformer; 
import javax.xml.transform.TransformerConfigurationException; 
import javax.xml.transform.TransformerException; 
import javax.xml.transform.TransformerFactory; 
import javax.xml.transform.dom.DOMSource; 
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.Node; 
import org.xml.sax.SAXException;
public class DomDemo2 {
public static void main(String[] args) {
    // TODO Auto-generated method stub
    String path = "src/scores.xml";
    DocumentBuilderFactory dbf
     = DocumentBuilderFactory.newInstance();
    DocumentBuilder db = null;
    try {
        db = dbf.newDocumentBuilder();
        Document doc = db.parse(path);
        Element root = doc.getDocumentElement();
        //第一种添加元素的办法
//          Element eleStu = doc.createElement(“student”); 
//          Element eleId = doc.createElement(“id”); 
//              eleId.setTextContent(“3”);//设置文本值 
//          Element eleName = doc.createElement(“name”); 
//              eleName.setTextContent(“王五”); 
//          Element eleLesson = doc.createElement(“lesson”); 
//              eleLesson.setTextContent(“oracle”); 
//          Element eleScore = doc.createElement(“score”); 
//              eleScore.setTextContent(“78”); 
//          eleStu.appendChild(eleId); 
//          eleStu.appendChild(eleName); 
//          eleStu.appendChild(eleLesson); 
//          eleStu.appendChild(eleScore); 
//          root.appendChild(eleStu);//添加元素至根元素 
            //第二种添加元素的办法 
            //获取要添加的元素的模板,获取一个现有元素 
            Element eleStu = (Element) root.getElementsByTagName(“student”).item(0); 
            //复制现有元素创造一个新元素,包含换行 
            Element newEle = (Element) eleStu.cloneNode(true); 
            Node nodeId = newEle.getElementsByTagName(“id”).item(0); 
                nodeId.setTextContent(“4”); 
            Node nodeName = newEle.getElementsByTagName(“name”).item(0); 
                nodeName.setTextContent(“赵六”); 
            Node nodeLesson = newEle.getElementsByTagName(“lesson”).item(0); 
                nodeLesson.setTextContent(“JQuery”); 
            Node nodeScore = newEle.getElementsByTagName(“score”).item(0); 
                nodeScore.setTextContent(“88”); 
            root.appendChild(newEle);//添加元素至根元素 
            //保存文件 
            TransformerFactory tff = 
                    TransformerFactory.newInstance(); 
            Transformer tf = tff.newTransformer(); 
            //设置要保存哪些内容到XML文件,默认是整个 
            DOMSource ds = new DOMSource(doc); 
            //设置保存编码 
            tf.setOutputProperty(OutputKeys.ENCODING, “UTF-8”); 
            StreamResult sr = new StreamResult(new FileOutputStream(path)); 
            tf.transform(ds, sr); 
            System.out.println(“保存完成”); 
        } catch (ParserConfigurationException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } catch (SAXException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } catch (IOException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } catch (TransformerConfigurationException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } catch (TransformerException e) { 
            // TODO Auto-generated catch block 
            e.printStackTrace(); 
        } 
    }
}
“`
版权声明:本文为博主原创文章,未经博主允许不得转载。
XML解析代码课堂讲解实例的更多相关文章
- iOS 中的XML解析代码(SAX)
		
1.XML解析(SAX) NSXMLParser SAX 大文件 1)打开文档 - (void)parserDidStartDocument:(NSXMLParser *)parser 2)开始查找起 ...
 - xml解析代码示例
		
List<Entry> list = new ArrayList<>(); Entry entry = null; try { int eventType = response ...
 - XML解析代码
		
import java.io.File; import java.io.IOException; import java.util.HashMap; import java.util.LinkedLi ...
 - XML解析与xml和Map集合的互转
		
1.XML的解析.首先解析XML文件我们需要先获取到文件的存放路径,获取方法有三种分别获取xml文件不同的存放路径. 代码: public class PropertiesDemo { public ...
 - Java XML解析工具 dom4j介绍及使用实例
		
Java XML解析工具 dom4j介绍及使用实例 dom4j介绍 dom4j的项目地址:http://sourceforge.net/projects/dom4j/?source=directory ...
 - Delphi之通过代码示例学习XML解析、StringReplace的用法(异常控制 good)
		
*Delphi之通过代码示例学习XML解析.StringReplace的用法 这个程序可以用于解析任何合法的XML字符串. 首先是看一下程序的运行效果: 以解析这样一个XML的字符串为例: <? ...
 - Java Dom解析的三个实例
		
概述 Dom解析的文章已经烂大街了.在这里,只举三个场景下如何编码的例子: xml内有多个同名节点,获取这多个同名节点 已获取到某个节点,生成这个节点的xml描述 修改节点某属性的值 详细的讲解看官请 ...
 - Cocos2d-x 3.0 Json用法     Cocos2d-x xml解析
		
Cocos2d-x 3.0 加入了rapidjson库用于json解析.位于external/json下. rapidjson 项目地址:http://code.google.com/p/rapidj ...
 - Spring之XML解析
		
XML解析,我们可以通过我们常用的以下代码作为入口 也许,我们习惯使用第一种加载方式,但是以前也存在 第二种加载,并且这两种加载也有差别,下面再来分析. 先分析 第二种 使用 BeanFactory ...
 
随机推荐
- 中国移动OnetNet云平台 使用以太网传输数据流步骤
			
使用工具: 网络调试助手 链接:http://pan.baidu.com/s/1c06VC9E 密码:h0ys 1.选择TCP Client 2.输入IP 183.230.40.33 3.输入端口 ...
 - Django中日志管理
			
在settings中设置日志的相关信息,然后再逻辑代码区就可以保存相应的信息了 #简单设置: LOGGING = { 'version': 1, 'disable_existing_loggers': ...
 - python 删除文件中指定行
			
代码适用情况:xml文件,循环出现某几行,根据这几行中的某个字段删掉这几行这段代码的作用删除jenkins中config.xml中在自动生成pipline报错的时的回滚 start = '<se ...
 - LISP
			
LISP是一种通用高级计算机程序语言,长期以来垄断人工智能领域的应用.LISP作为因应人工智能而设计的语言,是第一个声明式系内函数式程序设计语言,有别于命令式系内过程式的C.Fortran和面向对象的 ...
 - 【Flask】ORM模型创建及数据库映射
			
1. 用 declarative_base 根据 engine 创建一个ORM基类.2. 用 Base 类作为基类来写自己的ORM类.要定义 __tablename__ 类属性,来指定这个模型映射到数 ...
 - CSS3自定义下拉框菜单
			
在线演示 本地下载
 - Android OTA在线升级二(升级包编译原理分析) 【转】
			
本文转载自:http://blog.csdn.net/huryjiang/article/details/7590015 1 升级包的制作 基本命令: Ø makeMtk [project[flav ...
 - 【JavaScript学习整理】js基础
			
HTML,CSS属于标记语言, JavaScript是基于客户端的脚本语言. 变量: 语法 var 变量名 = value var是系统内部关键字,用来声明变量 变量名规则: 1.不能以数字开头 ...
 - Fidder工具抓包及篡改数据
			
下载fiddler的最新版本: 运行fiddler之后测试要调试的页面是否可以捕获,刷新页面后左边列表会实时显示目前http请求的条目.如图红色部分 测试成功,开始断点捕获数据 点击菜单栏按钮[Rul ...
 - priority_queue用法(转载)
			
关于priority_queue 1,关于STL中的priority_queue:确定用top()查看顶部元素时,该元素是具有最高优先级的一个元素. 调用pop()删除之后,将促使下一个元素进入该位置 ...