目次:
ビデオ: Week 7, continued 2024
線形思考とホリスティック思考の間の二分法は、SAXをDOMから分離します。
SAX(XML for Simple API)は、XML文書を直線的に扱い、最初から最後まで文書単位で処理します。しかし、DOM(Document Object Model)を使用すると、ドキュメント全体に飛び込んで見ることができます。少し後に、ルート要素を拡大して、ルート要素内の要素にさらに近づけます。いくつかの状況では、ジャンプインはまさにあなたがする必要があります。
<! DOMノードの場合、XML文書にはいくつかのノード
があると考えられます。ノードの例には、要素、属性、コメント、および開始タグと終了タグの対の間の文字が含まれます。 XML文書全体がそれ自体ノードです。全体として、XML文書には12種類のノードがあります。 ツリーのノード まとめて、XMLドキュメント内のすべてのDOMノードがツリーを形成します。たとえば、リスト1の文書を参照してください。この文書のDOMツリーは、図1に示すツリーのようになります。
<! - 9 - > Anchovy Lovers Club
創設者、社長、広報長官
ツリーには11のノードがあります。それらを数えるには、ツリーのブランチを数えることから始めます(図1に便利に表示されています)。その後、メンバーfirstname = "Herbert"ブランチを2回カウントします。 (このブランチには2つのDOMノードがあり、Memberという名前の要素はノードであり、その要素の属性firstname = "Herbert"はノードです)。<!図1:
リスト1の文書を表すツリー
ツリーに関する論文
図のツリーを見ると、いくつか発見できます1. いくつかのノードは、他のノードの子ノードです。 たとえば、メンバノードはAnchovyLoversClubノードの子
です。リスト1では、Member要素がAncoverLoversClub要素の内部にネストされているためです。同様に、StandingノードはMemberノードの子ノードである。この家族の類推は続けています。メンバノードはStandingノードの
- 親 であり、AncoverLoversClubはメンバノードの親ノードである。 文書全体がノードです。 これは重要なポイントであり、忘れるのは簡単です。リスト1では、文書のルート要素はAnchovyLoversClubです。しかし、図1では、名前AnchovyLoversClubはツリーの最上部にありません。代わりに、単語#documentがツリーの最上部にあります。DOMツリーの一番上のノードはXML文書全体を表す。プログラマがドキュメントのルート要素がツリーを開始すると考えると、エラーが発生します。(それはありません)。 コメントとテキストはノードです。 図1において、コメントは文書ノードの子ノードである。これは、リスト1のコメントがドキュメントの一部であるためです。コメントは、ドキュメントの要素のいずれかの中にネストされていません。
- もう一度、系譜を演奏します。 #documentノードには、コメントノードとAnchovyLoverClubノードの2つの子があります。コメントとAnchovyLoversClubという2つのノードは、 兄弟と呼ばれます。
- 図1においても、創設者、社長、秘書、広報担当者のテキストはノードの一部である。リスト1では、Founder、President、Secretary、Publicity ManagerのテキストがStanding要素の中にあります。したがって、図1では、このテキストノードはStandingノードの子ノードです。 無視できるテキストであってもノードの一部です。図9によれば、AnchovyLoversClubノードには、#textとラベル付けされた2つのノードと、Memberというラベルの付いたもう1つのノードという3つの直接的な子ノードがあります。これは、DOMに関する限り、AnchovyLoversClubノードには3つの要素があるからです。キャリッジリターンと3つの空白 メンバー要素 キャリッジリターン図2に状況を示します。
- 図2: リスト1の2つのテキストノード
メンバーノードの子要素(2つの空白と1つのスタンド要素)はすべて兄弟です。
図1と図2の点と[cr]に注目しましょう。ツリー図では、ドットは空白を表し、[cr]は改行を表します。 DOMでは、AnchovyLoversClubの開始タグとMemberの開始タグの間にある無視できるすべての空白がノードを形成します。 AnchovyLoversClubの開始タグを終了するアングルブラケットから始めると、次の行に移動し、メンバー開始タグを開くアングルブラケットの前に3つの空白があります。そのすべてのものはDOMノードです。
終了タグはノードではありません。
-
SAXを使用すると、Member要素を開始し、後でMember要素を終了するという考えが考えられます。 DOMでは、あなたはこのようには考えません。代わりに、メンバー要素を1回だけ訪問します。その訪問の中で、あなたは立っている要素といくつかのテキストを訪れます。 DOMにはSAX endElementメソッドに対応するメソッドはありません。