首页 > 其他分享 >web开发总结----xml的写入、读取---2

web开发总结----xml的写入、读取---2

时间:2023-05-05 23:02:49浏览次数:48  
标签:xml web name Element --- document root 节点 String

public class DOM4JTest 
{

    /** *//** */
    /** *//** */
    /** *//** */
    /** *//**
     * DOM4J读写XML示例
     * 
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) 
{
        try 
{
            XMLWriter writer = null;// 声明写XML的对象
            SAXReader reader = new SAXReader();

            OutputFormat format = OutputFormat.createPrettyPrint();
            format.setEncoding("GBK");// 设置XML文件的编码格式

            String filePath = "d:\\student.xml";
            File file = new File(filePath);
            if (file.exists()) 
{
                Document document = reader.read(file);// 读取XML文件
                Element root = document.getRootElement();// 得到根节点
                boolean bl = false;
                for (Iterator i = root.elementIterator("学生"); i.hasNext();) 
{
                    Element student = (Element) i.next();
                    if (student.attributeValue("sid").equals("001")) 
{
                        // 修改学生sid=001的学生信息
                        student.selectSingleNode("姓名").setText("王五");
                        student.selectSingleNode("年龄").setText("25");

                        writer = new XMLWriter(new FileWriter(filePath), format);
                        writer.write(document);
                        writer.close();
                        bl = true;
                        break;
                    }
                }
                if (bl) 
{
                    // 添加一个学生信息
                    Element student = root.addElement("学生");
                    student.addAttribute("sid", "100");
                    Element sid = student.addElement("编号");
                    sid.setText("100");
                    Element name = student.addElement("姓名");
                    name.setText("嘎嘎");
                    Element sex = student.addElement("性别");
                    sex.setText("男");
                    Element age = student.addElement("年龄");
                    age.setText("21");

                    writer = new XMLWriter(new FileWriter(filePath), format);
                    writer.write(document);
                    writer.close();
                }
            } else 
{
                // 新建student.xml文件并新增内容
                Document _document = DocumentHelper.createDocument();
                Element _root = _document.addElement("学生信息");
                Element _student = _root.addElement("学生");
                _student.addAttribute("sid", "001");
                Element _id = _student.addElement("编号");
                _id.setText("001");
                Element _name = _student.addElement("姓名");
                _name.setText("灰机");
                Element _age = _student.addElement("年龄");
                _age.setText("18");

                writer = new XMLWriter(new FileWriter(file), format);
                writer.write(_document);
                writer.close();
            }
            System.out.println("操作结束! ");
        } catch (Exception e) 
{
            e.printStackTrace();
        }

    }
}
执行结果应该是这样:



循环解析节点:     
private     
  void 
   getAllNodes(String xml)  
  
   {
        try 
{
            Document authtmp = DocumentHelper.parseText(xml);
            List<Element> list = authtmp.selectNodes("//sms/node");
            for (int j = 0; j < list.size(); j++) 
{
                Element node = (Element) list.get(j);
                nodeByNodes(node);
            }
        } catch (Exception e) 
{
            e.printStackTrace();
        }
    }   

       private 
    
  void 
   nodeByNodes(Element node)  
  
   {
        if (node.element("node") != null) 
{
            String id = node.attributeValue("id");
            String name = node.attributeValue("name");
            System.out.print(id + "-------");
            System.out.println(name);
            for (Iterator i = node.elementIterator("node"); i.hasNext();) 
{
                Element newNode = (Element) i.next();
                nodeByNodes(newNode);
            }
        } else 
{
            String id = node.attributeValue("id");
            String name = node.attributeValue("name");
            System.out.print(id + "-------");
            System.out.println(name);
        }
    }  
其次DOM4J的解释

一.Document对象相关

1.读取XML文件,获得document对象.              SAXReader reader =     
  new SAXReader();
      Document   document    =    reader.read( 
  new 
   File( 
  " 
  input.xml 
  " 
  ));  
2.解析XML形式的文本,得到document对象.
     
         String text    =     
  " 
  <members></members> 
  ";
      Document document    =    DocumentHelper.parseText(text);  
3.主动创建document对象.
              Document document    = DocumentHelper.createDocument();
      Element root    =    document.addElement(   "   members 
  " 
  ); 
  // 
   创建根节点  
二.节点相关
1.获取文档的根节点.     
        Element rootElm    =    document.getRootElement();  
2.取得某节点的单个子节点.
     
        Element memberElm   =   root.element(   "   member   " 
  ); 
  // 
   "member"是节点名  
3.取得节点的文字
     
        String text   =   memberElm.getText();  
也可以用:
     
        String text   =   root.elementText(   "   name   "   );  
这个是取得根节点下的name字节点的文字.

4.取得某节点下名为"member"的所有字节点并进行遍历.        List nodes    =    rootElm.elements(   "   member   ");

for    (Iterator it    =    nodes.iterator(); it.hasNext();)    {
    Element elm = (Element) it.next();
   // do something
}  
5.对某节点下的所有子节点进行遍历.
     
    for   (Iterator it   =   root.elementIterator();it.hasNext();)   {
                 Element element = (Element) it.next();
                // do something
             }  
6.在某节点下添加子节点.
     
Element ageElm    =    newMemberElm.addElement(   "   age   "   );  
7.设置节点文字.
     
ageElm.setText(   "   29   "   );  
8.删除某节点.
     
parentElm.remove(childElm);   //    childElm是待删除的节点,parentElm是其父节点  
9.添加一个CDATA节点.
     
         Element contentElm    =    infoElm.addElement(   "   content   "   );
         contentElm.addCDATA(diary.getContent());

            contentElm.getText(); // 特别说明:获取节点的CDATA值与获取节点的值是一个方法
            contentElm.clearContent(); //清除节点中的内容,CDATA亦可  
三.属性相关.
1.取得某节点下的某属性     
             Element root   =   document.getRootElement();    
             Attribute attribute   =   root.attribute(   "   size   "   );   //    属性名name  
2.取得属性的文字
     
             String text   =   attribute.getText();  
也可以用:
     
String text2   =   root.element(   "   name   "   ).attributeValue(   "   firstname   "   );  
这个是取得根节点下name字节点的属性firstname的值.

3.遍历某节点的所有属性     
  Element root   =   document.getRootElement();    
               for   (Iterator it   =   root.attributeIterator();it.hasNext();)   {
                 Attribute attribute = (Attribute) it.next();
                 String text=attribute.getText();
                 System.out.println(text);
             }  
4.设置某节点的属性和文字.
     
newMemberElm.addAttribute(   "   name   "   ,    "   sitinspring   "   );  
5.设置属性的文字
     
             Attribute attribute   =   root.attribute(   "   name   "   );
             attribute.setText(   "   sitinspring   "   );  
6.删除某属性
     
             Attribute attribute   =   root.attribute(   "   size   "   );   //    属性名name   
                root.remove(attribute);  
四.将文档写入XML文件.1.文档中全为英文,不设置编码,直接写入的形式.
     
XMLWriter writer    =   new    XMLWriter(   new    FileWriter(   "   output.xml   "   ));
writer.write(document);
writer.close();  
2.文档中含有中文,设置编码格式写入的形式.
     
             OutputFormat format    =    OutputFormat.createPrettyPrint();
             format.setEncoding(   "   GBK   "   );       //    指定XML编码           
                XMLWriter writer    =   new    XMLWriter(   new    FileWriter(   "   output.xml   "   ),format);
            
             writer.write(document);
             writer.close();  
五.字符串与XML的转换
1.将字符串转化为XML     
String text    =   "   <members> <member>sitinspring</member> </members>   "   ;
Document document    =    DocumentHelper.parseText(text);  
2.将文档或节点的XML转化为字符串.
     
             SAXReader reader    =   new    SAXReader();
             Document   document    =    reader.read(   new    File(   "   input.xml   "   ));            
             Element root   =   document.getRootElement();                
             String docXmlText   =   document.asXML();
             String rootXmlText   =   root.asXML();
             Element memberElm   =   root.element(   "   member   "   );
             String memberXmlText   =   memberElm.asXML();

标签:xml,web,name,Element,---,document,root,节点,String
From: https://blog.51cto.com/iwtxokhtd/6248012

相关文章

  • 电子邮件系统 2----JavaMail 搜索指定邮件示例
    1./**2.*CrazyItTest3.*使用JavaMail搜索并删除指定邮件示例4.*/5.package6.import7.import8.import9.import10.import11.import12.import13.import14.import15.import16.import17.import18.import19.import20./**21.*@authorBi......
  • javaweb性能优化-----总结
    高吞吐量关键指标:1、并发访问量2、在线数量3、数量查询所占比重此三点的直接体现:1、数据状态保存2、登陆状态信息保存3、频繁的数据连接和存储查询策略优化:1、减少一次数据读取的条目可以较大改善和减轻服务器对CPU和内存的压力2、减少一次数据读取的条目可以检查网络传输的压力,减......
  • Java Web性能优化-----1
    JavaWeb性能优化你时常被客户抱怨JSP页面响应速度很慢吗?你想过当客户访问次数剧增时,你的WEB应用能承受日益增加的访问量吗?呵呵下面讲述了调整JSP和servlet的一些非常实用的方法,它可使你的servlet和JSP页面响应更快,扩展性更强。而且在用户数增加的情况下,系统负载会呈现出平滑上长的......
  • MySQL----索引的创建、删除和查看
    1.索引作用  在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。  例如,有3个未索引的表t1、t2、t3,分别只包含列c1、c2、c3,每个表分别含有1000行数据......
  • C语言--指针的进阶3
    指向函数指针数组的指针intAdd(intx,inty){ returnx+y;}intmain(){ //pf函数指针 int(*pf)(int,int)=Add; //pfArr函数数组指针 int(*pfArr[4])(int,int)={Add}; //ppfArr是一个指向[函数指针数组]的指针 int(*(*ppfArr)[4])(int,int)=&pfArr;......
  • MySQL----数据库的安装、创建
    一、MySQL的安装。。。。。 二、MySQL实例的创建注意:停掉MySQL的服务(我的电脑---管理---服务) 如果实例一次创建不成功,第二次创建时会遇到如下错误:mysql安装出现errorNr.1045我们在windows下安装mysql时会出现Accessdeniedforuser'root'@localhost'(usingpassword:No)的问......
  • python练习-简单计算器
    #*_*coding:utf8*_*#简单计算器importtkinterfromfunctoolsimportpartial#按钮输入调用defget_input(entry1,argu):#从entry窗口展示中获取输入的内容input_data=entry1.get()#合法运算符:+-*/--**//+-#------------输入合法性判断的......
  • python基础学习-文件
    """文件操作open()打开open(name,mode,encoding)name:文件名,文件所在的路径mode:文件访问模式,只读r,写入w(文件存在,从开头开始编辑,原有内容会删除,不存在,创建),追加a(文件存在,从已有内容之后进行编辑,不存在,创建)读写encoding:编码格式"""#打开文件f=open("demo.txt","r",encoding="......
  • python基础学习-字典
    """字典dict定义:元素是键值对,key不能重复,不能使用下标索引,key是除字典外其他类型,value为任意类型,可嵌套,可修改,支持for循环,不支持while循环#字面量{key:value,key:value,key:value}#定义变量变量名称={key:value,key:value,key:value}#定义空列表变量名称=dict(......
  • day1 hadopp安装与使用-前期准备【上】
    【OS】先说明一下,本人正处于大二下,之前一直学的又水又混乱,突发奇想开个博客来记录一下方便自己日后回顾。所写皆为本人自己查阅资料or询问老师所得,非官方,不保熟,路过的家人们可以和我多多探讨,在上手时还是建议参考大佬的帖子。完毕! 【参考教材】大数据基础编程、实验和案例教程......