XML学习笔记(附上思维导图)

【文章标题】XML学习笔记(附上思维导图)

【文章作者】曾健生

【作者邮箱】[email protected]

【作者QQ190678908

【作者博客】http://blog.csdn.net/newjueqi

                     http://newjueqi.iteye.com/

【编程环境】JDK 1.6.0_01

【作者声明】欢迎转载文章,但转载请保留文章的完整性以及注明文章的出处。

 

*******************************************************************************

 

       XML现在被广泛应用于WEB开发,属性它的基本概念和基本操作(增,删,改,查)等具有重要的意义。

 

1. 了解什么是 格式良好 xml 文档. 知道 xml 的基本语法

 a,文档声明必须在第一行

<?xml version="1.0" encoding="UTF-8"?>

 bXML标记名称区分大小写,标记名称不能包含空格。

c, XML空元素的表示:

    1.<student></student>

    2.<student/>

d,  XML不允许标签交叉,如下是不允许的:

    <customer>

          <name >jim

          <address>Beijing</name></address>

    </customer>

 eXML属性值要用单引号或双引号包含起来

 

本文所用的XML:

  <?xml version="1.0" encoding="UTF-8" ?>

- <customers>

- <customer id="001">

  <name>Tom</name>

  <age>13</age>

  <email>[email protected]</email>

  </customer>

- <customer id="002">

  <name>Jerry</name>

  <age>23</age>

  <email>[email protected]</email>

  </customer>

- <customer id="003">

  <name>Bob</name>

  <age>33</age>

  <email>[email protected]</email>

  </customer>

  </customers>

 

 

2. 利用 Dom4j 读取 xml 文档.

       2.1  得到 xml 文档代表的 Document 对象

 

//1.创建一个SAXReader对象

       SAXReader reader=new SAXReader();

      

       //创建一个XML文件的输入流

       File f=new File("E:\\workspace\\dom4j\\customers.xml");

      

       //创建一个文档对象

       Document doc=reader.read( f );

 

       2.2  熟悉 Element, Attribute, Node 等基本 API

//获取根节点

       Element root=doc.getRootElement();

      

       //获取根节点下的所有子节点的集合

       List<Element> e1 =root.elements();

      

       for( Element ele: e1 )

       {

          

           /*

            通过子节点的方法

            */

           //获取属性:ID值

           Attribute attr=ele.attribute(0);

           System.out.println( attr.getName()+" "+attr.getText());

          

           //获取子节点的名称

           System.out.println( ele.getName());

          

           //获取子节点的值

           System.out.println( ele.getText());      

          

           /*

            * 通过 Attribute获取值

            */

           System.out.println( ele.attributeValue("id"));//获取属性

           System.out.println( ele.elementText("name"));//获取子节点的姓名值

           System.out.println( ele.elementText("age"));//获取子节点的年龄值

       }

 

       2.3 使用 XPath 查找指定的节点

 

几个常用的:

 

Nodename:选取此节点的所有子节点

/:从根节点选取

//:从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置

@:选取属性

//title[@lang='eng']:选取所有 title 元素,且这些元素拥有值为 eng lang 属性

/bookstore/book[price>35.00]:选取所有 bookstore 元素的 book 元素,且其中的 price 元素的值须大于 35.00

 

/*

            * 使用XPath获取

            */

           //获取name的值为"Tom"的节点

           //Node node = doc.selectSingleNode( "//customer[name='"+"Tom"+"']" );

          

           //获取id的值为"001"的节点

           Node node = doc.selectSingleNode( "//customer[@id='"+"002"+"']" );

           Element el=(Element) node;

           System.out.println( el.attributeValue("id"));

 

 

3. XML文件的创建,增删操作

1XML文件的创建

public static void main(String[] args) throws IOException {

              // TODO Auto-generated method stub

              //1. 创建一个 Document 对象

              Document document = null;

              document = DocumentHelper.createDocument();

             

              //2. Document 对象下添加一个根节点: students

              Element root = document.addElement("students");

             

              //3. students 节点下添加 student 节点

              Element stuEle_1 = root.addElement("student");

             

              //4. student 节点下添加 name, age 子节点

              stuEle_1.addAttribute("id", "001");

              stuEle_1.addElement("name").setText("Mike");

              stuEle_1.addElement("age").setText("23");

             

              Element stuEle_2 = root.addElement("student");

              stuEle_2.addAttribute("id", "001");

              stuEle_2.addElement("name").setText("Rose");

              stuEle_2.addElement("age").setText("22");

             

              //5. 1 创建好的 Document 对象, 写到 students.xml 文件中

              XMLWriter xmlWriter = null;

              FileWriter fileWriter = new FileWriter("students.xml");

              OutputFormat format = OutputFormat.createPrettyPrint();

              xmlWriter = new XMLWriter(fileWriter, format);

              xmlWriter.write(document);

             

              xmlWriter.close();

       }

}

 

生成的XML如下:

  <?xml version="1.0" encoding="UTF-8" ?>

- <Students>

- <student id="002">

  <name>Tom</name>

  <age>23</age>

  </student>

- <student>

  <name>Jim</name>

  <age>24</age>

  </student>

  </Students>

 

 

2)增加子节点

A.获取新创建的子节点信息文本信息。

B.通过SAXReaderread( File f )方法获取XML文档的document对象。

C.注意,要现获取根节点,然后在根节点下按层次地用addElement()和addAttribute()增加子节点和属性。

D.用XMLWriter.write(Document doc)方法把修改后的Document对象持久化到XML文件中

E.关闭XMLWriter流。

 

3)删除子节点

A.获取XML文档的document对象

B.获取要删除子节点的对象,可使用Xpath方便地获取

C.获取要删除子节点的父节点

D.从document对象中用父节点. remove(子节点)的方法删除子节点

font-family: Times New Roman

你可能感兴趣的:(编程,c,xml,qq,C#)