- Java XML 教程
 - Java XML 主页
 - Java XML 概述
 - Java XML 解析器
 - Java DOM 解析器
 - Java DOM 解析器
 - 解析XML文档
 - 查询XML文档
 - 创建 XML 文档
 - 修改XML文档
 - Java SAX 解析器
 - Java SAX 解析器
 - 解析XML文档
 - 查询XML文档
 - 创建 XML 文档
 - 修改XML文档
 - JDOM XML 解析器
 - JDOM XML 解析器
 - 解析XML文档
 - 查询XML文档
 - 创建 XML 文档
 - 修改XML文档
 - Java StAX 解析器
 - Java StAX 解析器
 - 解析XML文档
 - 查询XML文档
 - 创建 XML 文档
 - 修改XML文档
 - Java XPath 解析器
 - Java XPath 解析器
 - 解析XML文档
 - 查询XML文档
 - 创建 XML 文档
 - 修改XML文档
 - Java DOM4J 解析器
 - Java DOM4J 解析器
 - 解析XML文档
 - 查询XML文档
 - 创建 XML 文档
 - 修改XML文档
 - Java XML 有用资源
 - Java XML - 问题与解答
 - Java XML - 快速指南
 - Java XML - 有用的资源
 - Java XML - 讨论
 
Java StAX 解析器 - 修改 XML 文档
演示示例
这是我们需要修改的 XML -
<?xml version = "1.0"?>
<class>
   <student rollno = "393">
      <firstname>dinkar</firstname>
      <lastname>kad</lastname>
      <nickname>dinkar</nickname>
      <marks>85</marks>
   </student>
   
   <student rollno = "493">
      <firstname>Vaneet</firstname>
      <lastname>Gupta</lastname>
      <nickname>vinni</nickname>
      <marks>95</marks>
   </student>
   
   <student rollno = "593">
      <firstname>jasvir</firstname>
      <lastname>singh</lastname>
      <nickname>jazz</nickname>
      <marks>90</marks>
   </student>
</class>
StAXModifyDemo.java
package com.tutorialspoint.xml;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.Format;
import org.jdom2.output.XMLOutputter;
public class StAXModifyDemo {
   public static void main(String[] args) {
      try {
         XMLInputFactory factory = XMLInputFactory.newInstance();
         XMLEventReader eventReader = factory.createXMLEventReader(
            new FileReader("input.txt"));
         SAXBuilder saxBuilder = new SAXBuilder();
         Document document = saxBuilder.build(new File("input.txt"));
         Element rootElement = document.getRootElement();
         List<Element> studentElements = rootElement.getChildren("student");
         while(eventReader.hasNext()) {
            XMLEvent event = eventReader.nextEvent();
            
            switch(event.getEventType()) {
               case XMLStreamConstants.START_ELEMENT:
               StartElement startElement = event.asStartElement();
               String qName = startElement.getName().getLocalPart();
               if (qName.equalsIgnoreCase("student")) {
                  Iterator<Attribute> attributes = startElement.getAttributes();
                  String rollNo = attributes.next().getValue();
                  
                  if(rollNo.equalsIgnoreCase("393")) {
                     //get the student with roll no 393
                     for(int i = 0;i < studentElements.size();i++) {
                        Element studentElement = studentElements.get(i);
                        if(studentElement.getAttribute(
                           "rollno").getValue().equalsIgnoreCase("393")) {
                           studentElement.removeChild("marks");
                           studentElement.addContent(new Element("marks").setText("80"));
                        }
                     }
                  }
               }
               break;
            }
         }
         XMLOutputter xmlOutput = new XMLOutputter();
         // display xml
         xmlOutput.setFormat(Format.getPrettyFormat());
         xmlOutput.output(document, System.out);
      } catch (FileNotFoundException e) {
         e.printStackTrace();
      } catch (XMLStreamException e) {
         e.printStackTrace();
      } catch (JDOMException e) {
         e.printStackTrace();
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}
这将产生以下结果 -
<?xml version = "1.0" encoding = "UTF-8"?> <student rollno = "393"> <firstname>dinkar</firstname> <lastname>kad</lastname> <nickname>dinkar</nickname> <marks>80</marks> </student> <student rollno = "493"> <firstname>Vaneet</firstname> <lastname>Gupta</lastname> <nickname>vinni</nickname> <marks>95</marks> </student> <student rollno = "593"> <firstname>jasvir</firstname> <lastname>singh</lastname> <nickname>jazz</nickname> <marks>90</marks> </student>