Java学习者论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

恭喜Java学习者论坛(https://www.javaxxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,购买链接:点击进入购买VIP会员
JAVA高级面试进阶视频教程Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程

Go语言视频零基础入门到精通

Java架构师3期(课件+源码)

Java开发全终端实战租房项目视频教程

SpringBoot2.X入门到高级使用教程

大数据培训第六期全套视频教程

深度学习(CNN RNN GAN)算法原理

Java亿级流量电商系统视频教程

互联网架构师视频教程

年薪50万Spark2.0从入门到精通

年薪50万!人工智能学习路线教程

年薪50万!大数据从入门到精通学习路线年薪50万!机器学习入门到精通视频教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程 MySQL入门到精通教程
查看: 314|回复: 0

[xml学习]java使用DOM读写xml文件

[复制链接]
  • TA的每日心情
    开心
    2021-3-12 23:18
  • 签到天数: 2 天

    [LV.1]初来乍到

    发表于 2014-10-10 00:59:32 | 显示全部楼层 |阅读模式
    一、写入xml文件
    java使用DOM创建如下xml: <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <root>
    <name id="2">zs</name>
    </root> 代码如下:
    package com.wasw100; import java.io.File; import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.transform.Transformer;
    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.Text; public class CreateXML {
    public static void main(String[] args) throws Exception {
       //实例化解析器
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
       //创建Document对象
        Document doc = builder.newDocument();   //创建XML文件所需的各种对象并序列化
        Element root = doc.createElement("root");
        Element name = doc.createElement("name");
        Text nameText = doc.createTextNode("zs");    name.appendChild(nameText);
        root.appendChild(name);
        doc.appendChild(root);
       
        name.setAttribute("id", "2");    doc2XmlFile(doc,"test.xml");  }  public static boolean doc2XmlFile(Document document, String filename) {
        boolean flag = true;
        try {
         TransformerFactory tFactory = TransformerFactory.newInstance();
         Transformer transformer = tFactory.newTransformer();
         /** 编码 */
         // transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
         DOMSource source = new DOMSource(document);
         StreamResult result = new StreamResult(new File(filename));
         transformer.transform(source, result);
        } catch (Exception ex) {
         flag = false;
         ex.printStackTrace();
        }
        return flag;
    }
    }

       
        二、读文件
    <?
        xml version="1.0" encoding="GB2312"
        ?>
       

        <
        people
        >
       
         
        <
        person
        personID
        ="1"
        >
       
            
        <
        name
        >
        CY
        </
        name
        >
       
            
        <
        age
        >
        22
        </
        age
        >
       
            
        <
        address
        >
        武汉
        </
        address
        >
       
         
        </
        person
        >
       
         
        <
        person
        personID
        ="2"
        >
       
            
        <
        name
        >
        SUN
        </
        name
        >
       
            
        <
        age
        >
        18
        </
        age
        >
       
            
        <
        address
        >
        襄樊
        </
        address
        >
       
         
        </
        person
        >
       
         
        <
        person
        personID
        ="3"
        >
       
            
        <
        name
        >
        LiGuo
        </
        name
        >
       
            
        <
        age
        >
        55
        </
        age
        >
       
            
        <
        address
        >
        武汉
        </
        address
        >
       
         
        </
        person
        >
       
         
        <
        person
        personID
        ="4"
        >
       
            
        <
        name
        >
        wj
        </
        name
        >
       
            
        <
        age
        >
        55
        </
        age
        >
       
            
        <
        address
        >
        应城
        </
        address
        >
       
         
        </
        person
        >
       

        </
        people
        >
        //====java文件===treeTest.java=================
      
       
       
        /**/
        /*
      * treeTest.java
      *
      * To change this template, choose Tools | Template Manager
      * and open the template in the editor.
      */
       


        package
         javaapplication2;

        /** */
        /**
      *
      * @author Administrator
      */
       

        import
         java.awt.
        *
        ;

        import
         javax.swing.
        *
        ;

        import
         javax.swing.tree.
        *
        ;

        import
         javax.swing.event.
        *
        ;

        import
         org.w3c.dom.
        *
        ;

        import
         javax.xml.parsers.
        *
        ;

        class
         treeTest
        extends
         JFrame
       
        {
         private JTree tree=null;
         private DefaultTreeModel treeModel=null;
         private static String Na=null;   //定义Name元素
         private static String Ag=null; //定义Age元素
         private static String Address=null;  //定义Address元素
         private static String sqlStr=null;
         private static String person=null;
         DefaultMutableTreeNode root=null;
         DefaultMutableTreeNode aaa=null;
         DefaultMutableTreeNode ccc1=null;
         DefaultMutableTreeNode ccc2=null;
         DefaultMutableTreeNode ccc3=null;
         
        public treeTest(String tit) throws Exception {
             super(tit);
             javax.xml.parsers.DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
             //根据解析器工厂来获得具体的加载文档对象
             javax.xml.parsers.DocumentBuilder builder=factory.newDocumentBuilder();
             //加载XML文件  路径不能是中文
             Document doc=builder.parse("a.xml");
             NodeList n1=doc.getElementsByTagName("person");
             root=new DefaultMutableTreeNode("People");
             treeModel=new DefaultTreeModel(root);
             tree=new JTree(treeModel);
            for(int i=0;i<n1.getLength();i++) {
                 //生成一个Element对象来存放具体节点的值
                 Element node=(Element)n1.item(i);
                 person=node.getNodeName().toString()+i;
                 Na=node.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();
                 Ag=node.getElementsByTagName("age").item(0).getFirstChild().getNodeValue();
                 Address=node.getElementsByTagName("address").item(0).getFirstChild().getNodeValue();
                
                 aaa=new DefaultMutableTreeNode(person);
                 ccc1=new DefaultMutableTreeNode(Na);
                 ccc2=new DefaultMutableTreeNode(Ag);
                 ccc3=new DefaultMutableTreeNode(Address);
                 aaa.add(ccc1);
                 aaa.add(ccc2);
                 aaa.add(ccc3);
                 treeModel.insertNodeInto(aaa,root,i);     //将每个aaa加到根节点root中
             }
             getContentPane().add(tree,BorderLayout.CENTER);
             final JLabel messageLabel=new JLabel("用户还没有选择!");
             add(messageLabel,BorderLayout.SOUTH);
            tree.addTreeSelectionListener(new TreeSelectionListener() {
                public void valueChanged(TreeSelectionEvent t) {
                     TreePath tp=t.getNewLeadSelectionPath();
                     messageLabel.setText("您选择了:"+tp.getLastPathComponent());
                 }
             });
             setSize(500,500);
             setDefaultCloseOperation(EXIT_ON_CLOSE);
             setVisible(true);
         }
        public static void main(String args[]) throws Exception {
             JFrame.setDefaultLookAndFeelDecorated(true);
             new treeTest("JTree-XML-Test");
         }
        运行结果:



       
         
         
          
          

            
          

            
          
         
       

      


    源码下载:http://file.javaxxz.com/2014/10/10/005932468.zip
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|Java学习者论坛 ( 声明:本站资料整理自互联网,用于Java学习者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-19 03:47 , Processed in 0.386984 second(s), 46 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表