}
@Override
public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException { stack.push(qName); }
@Override
public void endElement(String uri, String localName, String qName) throws SAXException { stack.pop(); }
@Override
public void characters(char[] ch, int start, int length) throws SAXException { String tag = stack.peek(); if(\
java.add(Double.parseDouble(new String(ch,start,length))); }else if(\
xml.add(Double.parseDouble(new String(ch,start,length))); } }
Test.java代码
package exe;
import java.io.IOException;
import org.xml.sax.InputSource; import org.xml.sax.SAXException; import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
public class Test {
public static void main(String[] args) { try {
XMLReader reader = XMLReaderFactory.createXMLReader(); reader.setContentHandler(new DefaultReader()); reader.parse(new InputSource(\ } catch (SAXException e) {
System.out.println(\
}
} catch (IOException e) {
System.out.println(\ } }
习题11答案
1.使用JDOM实现文件的修改 import java.io.File;
import java.io.FileOutputStream; import java.io.IOException;
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 JDOMExe {
public static void main(String[] args) { //读取XML文档
SAXBuilder saxBuilder = new SAXBuilder(); try {
Document doc = saxBuilder.build(new File(\ Element root = doc.getRootElement(); //修改XML文档 //增加元素
Element eltdescription = new Element(\ eltdescription.setText(\一款复古又时尚的新概念皮鞋\ root.addContent(eltdescription); //修改学生信息
Element eltprice = root.getChild(\ eltprice.setText(\
//输出XML文档
XMLOutputter out = new XMLOutputter(); //格式化输出
Format fmt = Format.getPrettyFormat(); fmt.setEncoding(\ fmt.setIndent(\ out.setFormat(fmt); try {
out.output(doc, new FileOutputStream(\ } catch (IOException e) {
// TODO Auto-generated catch block
}
}
e.printStackTrace(); }
} catch (JDOMException | IOException e) { // TODO Auto-generated catch block e.printStackTrace(); }
2.使用DOM4J实现文件的修改 import java.io.File;
import java.io.FileWriter; import java.io.IOException;
import java.io.UnsupportedEncodingException; import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException; import org.dom4j.Element;
import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter;
public class Dom4jExe {
public static void main(String[] args) { SAXReader sr = new SAXReader(); //忽略标签与标签之间的空白
sr.setStripWhitespaceText(true); //将相邻元素的内容合并处理 sr.setMergeAdjacentText(true); //读取XML文档 try {
Document doc = sr.read(new File(\ Element root = doc.getRootElement(); Iterator its = root.nodeIterator(); while(its.hasNext()){
Object temp = its.next(); if(temp instanceof Element){ Element elt = (Element)temp;
if(elt.getName().equals(\ //修改元素内容
elt.setText(\
}
}
} } }
//增加元素
Element eltdescription = root.addElement(\eltdescription.setText(\一款复古又时尚的新概念皮鞋\
//格式化输出
OutputFormat outFmt = new OutputFormat(\ //输出到文件
FileWriter fw = new FileWriter(\ XMLWriter xmlWriter = new XMLWriter(fw,outFmt); xmlWriter.write(doc); fw.close();
} catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) {
// TODO Auto-generated catch block e.printStackTrace();
} catch (DocumentException e) {
// TODO Auto-generated catch block e.printStackTrace(); }