一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

java实现XML增加元素操作简单示例

时间:2017-03-16 编辑:简简单单 来源:一聚教程网

 代码如下 复制代码

packageDay01;

importjava.io.*;

importjavax.xml.parsers.*;

importjavax.xml.transform.*;

importjavax.xml.transform.dom.DOMSource;

importjavax.xml.transform.stream.StreamResult;

importorg.w3c.dom.*;

publicclassCRUDDEMO {

  /*public void addElement() throws Exception{

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

    DocumentBuilder builder = factory.newDocumentBuilder();

    Document doc = builder.parse(new File ("src/Day01/Book.xml"));

    Element newEle = doc.createElement("作者");

    newEle.setTextContent("ZC");

    Node nod = doc.getElementsByTagName("书").item(0);

    nod.appendChild(newEle);

    Source sour = new DOMSource(doc);

    Result result = new StreamResult (new FileOutputStream("src/Day01/Book.xml"));

    write (sour, result);

  }*/

  public void addElement2() throws Exception{

    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //建立工厂

    DocumentBuilder builder = factory.newDocumentBuilder(); //拿到builder

    Document doc = builder.parse(new File ("src/Day01/Book.xml")); //获得document,这是终极目的

    Element newEle = doc.createElement("作者");// 创建新元素/标签

    newEle.setTextContent("ZC"); //给元素设置内容 <作者>ZC

    Node nod = doc.getElementsByTagName("书名").item(0); //通过nodelist的item()方法获得具体节点

    /**

     * 在具体节点插入元素用 节点.insertBefore方法

     * 第一个参数是要插入的新节点,第二个是插入的位置

     */

    nod.insertBefore(newEle, doc.getElementsByTagName("书名").item(0));

    /**

     * DOMSource(Node n)

     * 注意 element是Node的一个子类,所以可以把doc放入构造函数

     *

     *

     */

    Source sour =newDOMSource(doc);

    Result result =newStreamResult (newFileOutputStream("src/Day01/Book.xml"));

    write (sour, result);

  }

  publicvoidwrite(Source source,Result result) {

    TransformerFactory tffactory = TransformerFactory.newInstance();

    Transformer tr;

    try{

      tr = tffactory.newTransformer();

      tr.transform(source, result);

    }catch(TransformerConfigurationException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

    }catch(TransformerException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

    }

  }

  publicstaticvoidmain(String[] args)throwsException {

    CRUDDEMO cr =newCRUDDEMO();

    cr.addElement2();

  }

}

修改前的XML:

 代码如下 复制代码

<书架>

  <书>

    <书名>Thinking in Java

    <作者>Eric

    <售价>$34

  

修改后的XML

 代码如下 复制代码

<书架>

  <书>

    <作者>ZC

    <书名>Thinking in Java

    <作者>Eric

    <售价>$34

  

热门栏目