XML第二十講:DOM 4 J解析XMLの詳細

4954 ワード

1.DOMのFormatクラスのgetRawFormatメソッドは、通常、XMLデータのネットワーク転送に用いられる.このフォーマットは不要な空白をすべて取り除くので、ネットワーク転送のデータ量を減らすことができる.もちろんハードディスク(HDD)に直接保存するなら、getPrettyFormat()メソッドを使うほうがいいです.
  解析XMLの最初のJavaフレームワークJDOMの使用について説明しましたが、これは別の解析XMLのオープンソースフレームワークであるDOM 4 Jの使用について説明します.javaのためにも完全にサポートされています.
1.DOM 4 Jパッケージをダウンロードして、その公式サイト(www.dom 4 j.org)は、もちろんgoogleダウンロード(dom 4 jのダウンロードをクリック)することもできます.この公式サイトは確かに関連するダウンロードリンクを見つけるのが難しいからです.
2.Dom 4 j開発パッケージをダウンロードした後、以前のJDOMと同様に解凍してEclipseライブラリに追加すれば開発できます
package com.ahuier.dom4j;

import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.XMLWriter;


public class Test1 {

	public static void main(String[] args) throws Exception {
		
/*	-----------------------------               :     ---------------
		
		 *      XML     ,dom4j JDOM     ,dom4j       
		 *     DocumentHelper      ,   Java  util ,         
		 
		
		//  Document  ,       
		Document document = DocumentHelper.createDocument();
		
		
		 *         
		 *   Document  setRootElement()     
		 
		Element root = DocumentHelper.createElement("student");
		document.setRootElement(root);
		
		*/
		
		
		//-----------------------------               :     ---------------
		/*
		 *   DocumentHelper     createDocument()  :
		 * public static Document createDocument(Element rootElement)
		 */
		Element root = DocumentHelper.createElement("student");
		Document document = DocumentHelper.createDocument(root);
		
		/*
		 *           
		 *   Element   public Element addAttribute(String name, String value)  
		 */
		root.addAttribute("name", "zhangsan");
		
		/*
		 *       
		 *  Element    Branch     
		 * public Element addElement(String name)
		 */
		Element helloElement = root.addElement("hello"); //      hello  add   root         
		Element worldElement = root.addElement("world");
		
		//        
		helloElement.setText("hello");
		helloElement.setText("world");
		
		//       
		helloElement.addAttribute("age", "20");

		
		/*
		 *      XML Document    
		 *   DOM4j XMLWriter 
		 */
		
		//  XMLWriter   public void write(Document doc)               
		XMLWriter xmlWriter = new XMLWriter();
		xmlWriter.write(document); //      
		
		//          xml    
		/*
		 *   XMLWriter      ,            
		 *                        
		 */
		
		//   public XMLWriter(OutputFormat format)    
		XMLWriter xmlWriter2 = new XMLWriter(new FileOutputStream("student2.xml"));
		xmlWriter2.write(document);
		
		//   XMLWriter(OutputStream out, OutputFormat format)    
		//                    ,          
		OutputFormat format = new OutputFormat("    ", true);
		XMLWriter xmlWriter3 = new XMLWriter(new FileOutputStream("student3.xml"), format);
		xmlWriter3.write(document);
		
		//   XMLWriter(Writer writer, OutputFormat format)     
		/*
		 *                :Writer
		 * ---------------------------------------------(1)---         
		 */
		XMLWriter xmlWriter4 = new XMLWriter(new FileWriter("student4.xml"), format);
		xmlWriter4.write(document);
		xmlWriter4.flush(); //                  
	//  xmlWriter4.close(); //         ,            ,      XMLWriter    
	
	}
}

[コンパイル実行結果]:
1):コマンドライン出力
world
2):student 2.xmlを生成
<?xml version="1.0" encoding="UTF-8"?>
<student name="zhangsan"><hello age="20">world</hello><world/></student>

3):student 3.xmlの生成
<?xml version="1.0" encoding="UTF-8"?>

<student name="zhangsan">
    <hello age="20">world</hello>
    <world/>
</student>

4):student 4.xmlの生成
<?xml version="1.0" encoding="UTF-8"?>

<student name="zhangsan">
    <hello age="20">world</hello>
    <world/>
</student>

[説明]:控訴コードセグメント1でflush()メソッドを呼び出さなければ、生成されたstudent 4.xmlは空のドキュメントであり、dom 4 jドキュメントのXML Writerクラスのwrite()メソッドの説明を参照することができるため、以下に示す.
public void write(Document doc) throws IOException
  This will print the Document to the current Writer.   Warning: using your own Writer may cause the writer's preferred character encoding to be ignored. If you use encodings other than UTF8, we recommend using the method that takes an OutputStream instead.   Note: as with all Writers, you may need to flush() yours after this method returns.
【まとめ】JDKやサードパーティのオープンソースパッケージを運用する際に問題が発生した場合は、すぐにgoogleに行くのではなく、ドキュメントを探して解決することを学ばなければなりません.