DOM方式生成XML
public static void cxml() {
// TODO Auto-generated method stub
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance()
DocumentBuilder db = dbf.newDocumentBuilder()
org.w3c.dom.Document docu = db.newDocument()
docu.setXmlStandalone(true)
// 创建一个节点作为根节点
org.w3c.dom.Element booksElement = docu.createElement("books")
// 创建一个节点作为子节点
org.w3c.dom.Element bookElement = docu.createElement("book")
// 给子节点添加子节点以内容
bookElement.setAttribute("id", "1")
// 再创建一个子节点
org.w3c.dom.Element name = docu.createElement("name")
name.setTextContent("遇见位置的自己")
// 将子节点添加到根节点之间
bookElement.appendChild( name)
booksElement.appendChild(bookElement)
//将根节点添加
docu.appendChild(booksElement)
//通过工厂方式将xml文件生成
TransformerFactory tsf =TransformerFactory.newInstance()
Transformer ts = tsf.newTransformer()
ts.setOutputProperty(OutputKeys.INDENT,"yes")
ts.transform( new DOMSource(docu), new StreamResult(new File("eric.xml")))
}
SAX方式生成XML
- 导入SAXParserHandler类、Book类、以及books.xml文件
public class SAXXML {
public static ArrayList<Book> parseXML (){
SAXParserHandler handler = null;
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
SAXParser parser = factory.newSAXParser();
handler = new SAXParserHandler();
parser.parse("books.xml", handler);
System.out.println("~!~!~!共有" + handler.getBookList().size()
+ "本书");
for (Book book : handler.getBookList()) {
System.out.println(book.getId());
System.out.println(book.getName());
System.out.println(book.getAuthor());
System.out.println(book.getYear());
System.out.println(book.getPrice());
System.out.println(book.getLanguage());
System.out.println("----finish----");
}
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return handler.getBookList();
}
public static void creatXML() throws TransformerConfigurationException, IOException, SAXException{
ArrayList<Book> bookList = parseXML();
SAXTransformerFactory tff = (SAXTransformerFactory) SAXTransformerFactory.newInstance();
TransformerHandler handler = tff.newTransformerHandler();
Transformer tr = handler.getTransformer();
tr.setOutputProperty(OutputKeys.INDENT , "yes");
tr.setOutputProperty(OutputKeys.ENCODING, "utf-8");
File f = new File("src/newbook.xml");
if(!f.exists()){
f.createNewFile();
}
Result result = new StreamResult(new FileOutputStream(f));
handler.setResult(result);
handler.startDocument();
AttributesImpl atts = new AttributesImpl();
handler.startElement("","" , "bookstore", atts);
for (Book book : bookList) {
atts.clear();
atts.addAttribute("", "", "id", "", book.getId());
handler.startElement("","" , "book", atts);
handler.characters(book.getName().toCharArray(), 0, book.getName().length());
handler.endElement("", "", "book");
handler.endElement("", "", "bookstore");
}
handler.endDocument();
}
public static void main(String[] args) throws TransformerConfigurationException, IOException, SAXException {
creatXML();
}