1-XML入門
extendssibleマークアップ言語拡張可能マークアップ言語
XMLを持つ:
1、データを保存するために使用することができる
2、プロファイルするために使用することができる
3、データ送信キャリア
HTMLとXMLに似た逆ツリー構造
の特定のコンテンツと機能は非常に詳細な、学ぶためにAPIを表示することができます
2-XML文書の宣言
- シンプルな声明、バージョン:XMLは、この時間を解析し、解析のバージョン
如:<?xml version="1.0">
- エンコーディング:XMLテキストを解析し、どのようなエンコード預金、どのようなコードの分解能
如:<?xml version="1.0" encoding="gbk">
- スタンドアロン:なし - 他の文書の関連文書
如:<?xml version="1.0" encoding="gbk" standalone="no"?>
3-XML要素の定義、属性定義
4-XMLコメント、CDATAエリア
あなたがコメントを追加しない場合、ラベルは、適切にそれ以外の場合はエラーを表示するためにのみ配置することができます。このときソリューションに注釈を付けることができ
、一般的にするために、通常は珍しい、データ送信時に発生した
エスケープ文字に置き換えなければならない2つの不正な文字(<&)を持っている
が、特定の文字列のあまりに多くがあり、どれが含まれている場合このテキストラベルやキーワードがあまりにも多く、あなたがラップにCDATAを使用することができ、XMLパーサを解析する必要はありませんが、これは一般的にあまりCDATAが見ています
用法:<![CDATA[内容]]>
5-XML構文解析モード(DOM&SAX)
DOM&SAX:実際には、要素は、文字データや属性データ内の2つの方法で取得することです。DOMは、解決するために多くの方法がある上から下へのツリー構造を形成し、メモリに保存されているすべての文書を入れて解析するが、一般的に、両方に使用されます。
同じ分析ツール:JAXP、JDOM、dom4jの(最も一般的)
6-XML DOM4Jエントリー
図1は、SAXReaderオブジェクトを作成するために
、2指定された解析済みXML
。3、ルート要素にアクセス
ルート要素以下子孫の要素に応じてサブ要素を得る、4
element.element("stu"); //返回根元素下的第一个stu元素
element.elements("stu");//返回根元素下的所有stu元素
特定のコード:
SAXReader sax = null;
Document dom = null;
try {
String filePath = "src/xml/demo.xml";
sax = new SAXReader();
dom = sax.read(filePath);
//返回xml文件的相对路径
//System.out.println(dom.getName());
//获得根元素对象的地址再获取根元素名
//System.out.println(dom.getRootElement().getName());
//获得Element集合(所有的stu元素),并获取元素下的数据
List<Element> element = dom.getRootElement().elements();
for (Element element2 : element) {
System.out.print(element2.element("name").getText()+"\t");
System.out.print(element2.element("age").getText()+"\t");
System.out.print(element2.element("address").getText());
System.out.println();
}
} catch (Exception e) {
e.printStackTrace();
}
7-XMLのXpathエントリ
:新しい知識、新しいオブジェクトの出会い
3.オブジェクトが正常値の何4. 5.蓄積見に戻るにはあります文書を参照するためのキーワード1. 2.注意「」。
dom4j里面支持xpath的写法,xpath其实是xml的路径语言,支持我们在解析xml的时候,能够快速的定位判断具体的某一个元素。
- パッケージはにJaxen-1.1-β-6.jarを依存jarファイルを追加します。
- 時間を指定した検索ノードでは、文法の規則に従ってXPathを見つけるために
- コードを解析する前のように連続したコード
特定のコード:
SAXReader sax = null;
Document dom = null;
try {
String filePath = "src/xml/demo.xml";
sax = new SAXReader();
dom = sax.read(filePath);
Element re = dom.getRootElement();
//要想使用Xpath,还得添加支持的jar,获取的是第一个,只返回一个
Element nameElement = (Element)re.selectSingleNode("//name");
System.out.println(nameElement.getText());
System.out.println("--------------------");
List<Element> list = re.selectNodes("//name");
for (Element element : list) {
System.out.println(element.getText());
}
} catch (Exception e) {
e.printStackTrace();
}
8-XML XML约束
開発プロセスのプロパティとデータの一部のみ制限されるように、一意にすることができますので、利用拘束
- DTD:制約の方法が、XMLパーサーは解決できない、と貧しい可読性、文法独自のカテゴリ
- スキーマ:実際には、XMLの文法規則、XMLの使用、XMLパーサーより便利に、より多くのテキストより、それは本当の意味を置き換えるものではありませんので、DTD
9-XML DTD
-
DTDは、ネットワーク上で紹介しました
DTDは、ネットワークパスDTD文書型のルートタグ名に名前をDTD
<!DOCTYPE stus PUBLIC "// UNKNOWN /"> "unknown.dtdを"> -
ローカルDTDの導入
DTDのローカル導入の場所のルートタグ名は、DTD:ローカルDTDをご紹介
<DOCTYPE stus SYSTEM "stus.dtdを"!>
次のようにDTDファイルのコードは:
<!stus ELEMENT(STU)>
<STU ELEMENT(名前、年齢、住所)! >
<!ELEMENT名(#PCDATA)>
<!ELEMENT年齢(#PCDATA)>
<!ELEMENTアドレス(#PCDATA)>
導入後、xmlファイルのSTU一つだけ、またはエラー -
XML DTD制約規則の内部に直接埋め込みます
DTD内に直接埋め込まれたXMLドキュメントの制約規則
<!DOCTYPE stus [
<!ELEMENT stus(STU)STU以下+> stus要素が、唯一の
<!ELEMENT STU(名前、年齢 )> STUの二つの要素以下の名前、年齢
<!要素名(#PCDATA)>
<!ELEMENT年齢(#PCDATA)>
<ATTLIST STU ID CDATA #IMPLIED!>はSTUは、属性、テキストタイプ、オプションの属性]>持っている
要素の数を: + 1以上*ゼロ個以上のゼロか?
財産の種類:CDATA:プロパティは、通常のテキストIDです:プロパティの値は一意である必要があります
10-XMLスキーマ
スキーマの書き込み、書き込み要素、その後徐々に書き込みレベルに
teacher.xsd:
<!-- xmlns:xml namespace:名称空间
targetNamespace:下面定义的元素都与这个名称空间绑定
elementFormDefault:元素的格式化情况 -->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/teacher"
xmlns:tns="http://www.example.org/teacher"
elementFormDefault="qualified">
<!-- 为复杂元素 -->
<element name="teachers">
<complexType>
<sequence>
<!-- 为复杂元素:默认只有一个 -->
<element name="teacher">
<complexType>
<sequence maxOccurs="unbounded">
<!-- 为简单元素 -->
<element name="name"></element>
<element name="age"></element>
</sequence>
</complexType>
</element>
</sequence>
</complexType>
</element>
</schema>
teacher.xml:
<!-- xmlns:xsi:这里必须是这样的写法,也就是这个值已经固定了
xmlns:这里是名称空间,也固定了,写的是chema里面的顶部目标名称空间
xsi:schemaLocation:有两段:前半段是名称空间,也是目标空间的值,后面的约束文档的路径 -->
<teachers
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.example.org/teacher"
xsi:schemaLocation="http://www.example.org/teacher teacher.xsd">
<teacher>
<name>张三</name>
<age>28</age>
</teacher>
</teachers>
名前空間の役割:あなたがその制約規則をバインドしたい場合は、XML、DTDを想定したが、その後、XMLが唯一のバインドDTDは、バインド複数のDTDが、複数のスキーマをバインドすることができないことができます。
名前空間バインディング制約の役割は、あなたが一連のルールを使用している場合、あなたが書くことができ、デフォルトで、使用可能な要素を支配します:
<name>张三</name>
<aa:name></aa:name>
<bb:name></bb:name>
11-手続きフレームワーク(BS・CS)
C / S(クライアント/サーバ)
、例えば:QQマイクロチャネル... LOL
利点:クライアントで書かれたコードの一部が、ユーザーエクスペリエンスは、好ましくは
欠点:サーバを更新する、更新されたフットプリントを持つクライアント大
B / S(ブラウザ/サーバ)
例:ウェブゲームwebQQ QQメール...
利点:長いブラウザが可能な限りクライアント、小さなフットプリント、更新せず
短所:ユーザーエクスペリエンスの低下
12 - Webサーバー
サーバー構成が平均よりも優れている、コンピュータで
、要求と応答受け入れ、ブラウザのアドレス、Webサーバソフトウェアのアドレスバーにクライアント入力
1:Tomcatの3にプロジェクトを発行:Elipse設定Tomcatの2をインストールするプロセスを
13-DOM4Jの概要
DOM4J、意味の異なるレベルを使用する場合:
Document doc = saxR.read("src/xml/teacher.xml");
System.out.println(doc.getName()); //此时还未进入xml,所以输出相对路径
Element element = doc.getRootElement();
//阶段一:
System.out.println(element.getName()); //进入xml根元素,输出根元素名
System.out.println(element.getText()); //进入xml根元素,此时两种方法一样
//阶段二:
System.out.println(element.element("teacher").getName()); //进入teacher元素,输出teacher
System.out.println(element.element("teacher").getText()); //进入teacher元素,但无法取出子元素,所以输出换行符
//阶段三:
System.out.println(element.element("teacher").element("name").getText());
HPF-自己概要
XML&Tomcatの学校は長い時間前に実際にあるが、ノートは作られていません。また、あなたはまた、ここで注意することが参照できる場所を彼らは忘れてしまった後で、同時に、共有する作られ、前に指摘しています。主に記録を行います。
そのため彼らの怠惰のために、それは長い、長い時間が全くJavaWebを学ぶために継続していない、と最近はもっと混乱し、多くの審議、またはJavaWebを拾う学ぶために続けてきた、私は学び、ブログのメモを書くことを学ぶしていきます。
---短いステップ、千マイル;強大な急流にない小川。