XMLは実戦認識から

10041 ワード

認識XML
XMLはタグ言語で、XMLを使用するとデータ交換、システム構成、コンテンツ管理などの機能を容易に実現できます.XMLはHTMLと似ていますが、最大の違いはHTMLの要素が固定されており、表示が主ですが、XML言語のタグはユーザーがカスタマイズし、主にデータ保存が主です.
XMLとHTMLの比較:
NO.
コンテンツの比較
HTML
XML
1
拡張性
拡張性なし
新しいタグ言語を定義できるタグなし言語
2
サイドポイント
情報の表示方法に重点を置く
情報を構造的に記述する方法に重点を置く
3
構文の要件
タグのネスト、ペアリングなどは要求されず、タグ間に一定の順序があることは要求されない
ネスト、ペアリングを厳格に要求し、統一的な順序付け構造の要求に従う.
4
可読性および保守性
読みづらい
構造が明確で、メンテナンス、読み取りが容易
5
データと表示の関係
コンテンツ記述と表示方式が融合
コンテンツ記述と表示方式の分離
6
ほごせい
保証なし
保証付き
XMLファイルの簡単な例を次に示します.


	
		  
		[email protected]
	
	
		  
		[email protected]
	

前述の例では、XMLファイルは、プリアンブルとデータ領域の2つの部分から構成されています.プリアンブルには、次の3つのプロパティがあります(
順序を間違えてはいけません):
バージョン:使用しているXMLバージョンを示し、現在は1.0です.
encoding:ページで使用される文字コードは、中国語があれば、一般的にGBKコードフォーマットを指定します.
Standalone:このXMLファイルが独立して実行されているかどうかは、表示が必要な場合はCSSまたはXSL制御を使用します.
XMLではカスタム要素を使用します.また、属性を定義することもできます.属性の内容は「」で囲まなければなりません.
注:使用可能なプロパティを表示する必要がない場合は、表示する必要がある場合は要素を使用します.
XMLの解析
本稿では,データ格納アプリケーションとしてXMLのみを重点的に紹介するので,表示部についてはあまり紹介しない.XMLの基本的な説明を理解した後、XMLファイルを解析する場合と、カスタムXMLファイルを生成する方法について説明します.
W 3 CはSAXとDOMの2種類の解析方式を定義し、下図のように:
SAXは、大規模なXMLドキュメントをすばやくスキャンすることができ、クエリー基準が見つかったときにすぐに停止し、処理します.DOMはXMLをすべてメモリにロードして1本のツリーを作成してから処理します.したがってDOMは大規模なXMLを処理するのに適していない.
同様に、DOMの弱点はSAXの強みであり、SAXはすべてのxmlをメモリにロードする必要はありません.しかし、SAXの欠点も明らかで、ファイルの順序を一度だけ解析することができ、ファイルへの勝手なアクセスをサポートしません.SAXもファイルの内容を読み取るだけで、内容を変更することはできません.DOMはファイルツリーを任意に変更でき、xmlファイルを変更できます.
SAX解析器とDOM解析器の違い:
No.
区別する
SAX
DOM
1
操作
ファイルを順番に読み込み、対応するイベントを生成し、任意のサイズのXMLファイルを処理できます.
メモリにファイルツリーを作成し、大規模なXMLファイルを処理するのに適していません.
2
アクセス制限
ファイルを順番に分析するしかなく、ファイルへの勝手なアクセスはサポートされていません.
ファイルツリーの任意の部分にアクセスでき、回数制限はありません
3
変更
XMLファイルの内容のみ読み込め、変更はできません
ファイルツリーを任意に変更でき、XMLファイルを変更できます.
4
複雑さ
開発者は複雑で、自分でイベントプロセッサを作る必要があります.
分かりやすく、開発しやすい
5
オブジェクトモデル
スタッフの柔軟性を高め、SAXで独自のXMLオブジェクトモデルを構築
DOMベースでファイルツリーが作成されました
DOM解析には以下の4つのコアの操作インタフェースがある.
Document:XMLドキュメント全体を表し、DOMツリー全体のルートを表し、ドキュメント内のデータへのアクセスと操作のエントリを提供します.
Node:DOMツリーのノードを表します.
NodeList:ノードの集合を表し、順序関係のあるノードのセットを表す. 
NamedNodeMap:ノードのセットとその一意の名前の対応関係を表します.
以上の4つのコアインタフェースを除いて、1つのプログラムがDOM解析読み取り操作を行う必要がある場合は、次の手順に従います.
次に、上記のxmlファイルを解析します.コードは次のとおりです.
	public static void main(String args[]) throws Exception {
		//   DocumentBuilderFactory    
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;
		//   DocumentBuilder    
		DocumentBuilder build = factory.newDocumentBuilder();
		Document doc = null;
		try {
			doc = build.parse(new File("D:" + File.separator + "dom_parse.xml")) ;
		} catch (Exception e) {
			e.printStackTrace();
		}
		//      linkman  
		NodeList nl = doc.getElementsByTagName("linkman") ;
		for(int x=0;x
 
  

XML
XML , TransformerFactory、Transformer、DOMSource StreamResult 。StreamResult , Transformer 。
SAX , SAXParserFactory SAXParser , SAXParserFactory newSAXParser() SAXParser , SAXParser parse() XML SAX 。

	public static void main(String args[]) throws Exception {
		
		//   DocumentBuilderFactory    
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance() ;
		//   DocumentBuilder    
		DocumentBuilder build = factory.newDocumentBuilder()  ;
		Document doc = build.newDocument() ;	//       XML  
		
		Element addresslist = doc.createElement("addresslist") ;
		
		Element linkman = doc.createElement("linkman") ;
		Element name = doc.createElement("name") ;
		name.setAttribute("index", "1");		//    
		Element email = doc.createElement("email") ;
		//       
		name.appendChild(doc.createTextNode("  ")) ;
		email.appendChild(doc.createTextNode("[email protected]")) ;
		//           
		linkman.appendChild(name) ;	// name linkeman    
		linkman.appendChild(email) ;	// email linkman    
		addresslist.appendChild(linkman) ;
		doc.appendChild(addresslist) ;
		
		TransformerFactory tf = TransformerFactory.newInstance() ;
		Transformer t = tf.newTransformer() ;
		t.setOutputProperty(OutputKeys.ENCODING, "GBK")  ;	//      
		DOMSource source = new DOMSource(doc) ;	//       
		StreamResult result = new StreamResult(new File("d:"+File.separator+"output.xml")) ;
		t.transform(source,result) ;
		
	}



SAX(Simple APIs for XML)
SAX , XML 。 SAX , (Document) 、 (Element) , , 。

SAX , SAX , , DefaultHandler , 。
SAX ( ):
    package com.xml;
	import org.xml.sax.Attributes;
	import org.xml.sax.SAXException;
	import org.xml.sax.helpers.DefaultHandler;

	public class SimpleSAX extends DefaultHandler{

	@Override
	public void startDocument() throws SAXException {

		System.out.println("");
	}
	
	@Override
	public void endDocument() throws SAXException {
		System.out.println("
"); } @Override public void startElement(String uri, String localName, String name, Attributes attributes) throws SAXException { System.out.print(""); } @Override public void characters(char[] ch, int start, int end) throws SAXException { System.out.print(new String(ch,start,end)); } @Override public void endElement(String uri, String localName, String name) throws SAXException { System.out.println(""+name+">"); } }


SAX :
package com.xml;

import java.io.File;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.helpers.DefaultHandler;

public class XMLtest {

	public static void main(String args[]) throws Exception {
		SAXParserFactory factory = SAXParserFactory.newInstance();
		SAXParser parser = factory.newSAXParser();
		String path = "d:"+File.separator+"qoutput.xml";
		
		try {
			parser.parse(path, new SimpleSAX());
		} catch (Exception e) {	
			e.printStackTrace();
		}
	}

}


XML :