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