ホームページ  >  記事  >  バックエンド開発  >  XML をより深く理解できるようになります。

XML をより深く理解できるようになります。

Y2J
Y2Jオリジナル
2017-04-26 10:12:081502ブラウズ

1. XML: 拡張マークアップ言語バージョン = "1.0"

  • 拡張可能: すべてのタグがカスタマイズされています

  • 機能: データストレージ

    • 設定ファイル

    • データ送信

  • htmlとxmlの違い

    • HTML構文は緩く、xml構文は厳密です

    • htmlはページ表示に使用され、xmlはデータ保存に使用されます

    • HTMLのすべてのタグは事前定義されており、すべてのxmlタグはカスタマイズされた

2. 8859-1

  • スタンドアロンはドキュメントが独立しているかどうかを指定します

    • XMLドキュメントの最初の行に記述する必要があります

    • 書き込み: 41d1bdbe64b863f2b16c14c0adc44b32

    • 属性

    • 要素 XML ドキュメント内のタグ

    • 要素名は大文字と小文字が区別されます
    • 数字を先頭にすることはできません
  • あるはずだし、できるドキュメント内のルート要素は 1 つだけです

    • 要素が必要です 正しいクロージャ 6c04bd5ca3fcae76e30b72ad730ca86d36cc49f0c466276486e50c850b7e4956 076402276aae5dbec7f672f8f4e5cc81

    • 要素は正しくネストされている必要があります

    • 要素名は以下に準拠している必要があります

    • テキスト

    • 120f1c32cee76c872f0716566924945c
    • エスケープ文字>
  • CDATAのデータがそのまま表示されます

    • 属性

    • 属性値は引用符で囲む必要があります。一重引用符と二重引用符はOKです
    • Annotation
  • 19791207a4e0a22c816ac020ecd8cae0
    • 処理命令:基本的には使用しませんnow
  • 86de24f6ab67cab67766fff97d70df58
    • 3. XML制約
  • 制約とはxmlの記述ルールです
    • 制約の分類:

xsd制約ドキュメントのインポート

  • ルートタグの書き込み

  • インスタンス名前空間の導入xmlns:xsi="www.w3.org/2001/XMLSchema-instance"

    • 名前空間 xsi:schemaLocation="www.itcast.cn/xmlstudent.xsd" の紹介

    • デフォルトの名前空間を紹介します

    • 2. はじめに インスタンス名前空間 xmlns:xsi="www .w3.org/2001/XMLSchema-instance"

    • 3. 名前空間 xsi:schemaLocation="www.itcast.cn/xmlstudent.xsd" を導入します

    • 4 、デフォルトの名前空間を導入します

    • - ->

    • <?xml version="1.0"?>
      <xsd:schema xmlns="www.itheima.cn/xml"
              xmlns:xsd="www.w3.org/2001/XMLSchema"
              targetNamespace="www.itheima.cn/xml" elementFormDefault="qualified">
          <xsd:element name="students" type="studentsType"/>
          <xsd:complexType name="studentsType">
              <xsd:sequence>
                  <xsd:element name="student" type="studentType" minOccurs="0" maxOccurs="unbounded"/>
              </xsd:sequence>
          </xsd:complexType>
          <xsd:complexType name="studentType">
              <xsd:sequence>
                  <xsd:element name="name" type="xsd:string"/>
                  <xsd:element name="age" type="ageType" />
                  <xsd:element name="sex" type="sexType" />
              </xsd:sequence>
              <xsd:attribute name="number" type="numberType" use="required"/>
          </xsd:complexType>
          <xsd:simpleType name="sexType">
              <xsd:restriction base="xsd:string">
                  <xsd:enumeration value="male"/>
                  <xsd:enumeration value="female"/>
              </xsd:restriction>
          </xsd:simpleType>
          <xsd:simpleType name="ageType">
              <xsd:restriction base="xsd:integer">
                  <xsd:minInclusive value="0"/>
                  <xsd:maxInclusive value="256"/>
              </xsd:restriction>
          </xsd:simpleType>
          <xsd:simpleType name="numberType">
              <xsd:restriction base="xsd:string">
                  <xsd:pattern value="itheima_\d{4}"/>
              </xsd:restriction>
          </xsd:simpleType>
      </xsd:schema>
      <?xml version="1.0" encoding="UTF-8" ?>
    • 内部 dtd は xml 内の dtd を定義します

    • 外部 dtd は外部ファイル内の dtd を定義します

    • Student.dtd

    • student.xml

    • ローカル dtd ファイル353dd99e15e96ce4749f42e9ec302796

    • ネットワーク dtd ファイル92491072dd90616ffd3ba0639addc5ca

    • <students
          xmlns="www.itheima.cn/xml"
          xsi:schemaLocation="www.itheima.cn/xml student.xsd"
          xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
      >
          <student number="itheima_1001">
              <name>asfd</name>
              <age>12</age>
              <sex>male</sex>
          </student>
      </students>
      <students
          xmlns:itheima="www.itheima.cn/xml"
          xsi:schemaLocation="www.itheima.cn/xml student.xsd"
          xmlns:xsi="www.w3.org/2001/XMLSchema-instance"
      >
          <itheima:student number="itheima_1001">
              <itheima:name>asfd</itheima:name>
              <itheima:age>12</itheima:age>
              <theima:sex>male</itheima:sex>
          </itheima:student>
      </itheima:students>
    • dtd 制約は厳密ではありません

    • スキーマ

    • 4. XMLの解析

    • XMLの解析が可能:

    • xmlが設定ファイルとして使用される場合: 読み取り
    • xmlが送信ファイルとして使用される場合: write、read
    • XML解析のアイデア:

    • 利点: メモリを占有しない、速い

欠点: 読み取りのみ可能、書き戻しはできない

  • 利点: DOMツリーがメモリ内に形成されるため、 DOM ツリーを追加、削除、変更、確認できます

    • 短所: DOM ツリーは大量のメモリを消費し、解析速度が遅い

    • ドキュメント要素のテキスト属性コメント

    DOM:ドキュメントをメモリに保存し、DOM ツリー (ドキュメント オブジェクト) を形成し、ドキュメントのさまざまなコンポーネントをいくつかのオブジェクトにカプセル化します
  • SAX: 行ごとの読み取り、イベント駆動型
    • xml によく使用されるパーサー
    • はルールを定義します

    • 使用方法

    • 使用手順

    • electNodes()

    • 注: パッケージjaxen...jar

      をインポートするには

    • 创建解析器 SAXReader reader = new SAXReader()

    • 解析xml 获得document对象 Document document = reader.read(url)

    •         //    nodename 选取此节点。

    •         //    /     从根节点选取。

    •         //    //     从匹配选择的当前节点选择文档中的节点,而不考虑它们的位置。

    •         //    ..     选取当前节点的父节点。

    •         //    @     选取属性。

    •         //      [@属性名]    属性过滤

    •         //      [标签名]     子元素过滤

    •       @Test

            //遍历所有元素节点

    •  publicvoidtest2()throwsException{
                  //创建一个xml解析对象
                  SAXReaderreader= new SAXReader();
                  //把xml文档加载到document对象中
                  Documentdocument= reader.read("src/Book.xml");
                  Elementroot= document.getRootElement();
                  treeWalk(root);
            }
            
            privatevoidtreeWalk(Elementele){
                  //输出当前节点的名字
                  System.out.println(ele.getName());
                  //ele.nodeCount()得到当前节点的所有子节点的数量
                  for(inti= 0;i<ele.nodeCount();i++){
                        //取出下标为i的节点
                        Nodenode= ele.node(i);
                        //判断当前节点是否为标签
                        if(nodeinstanceofElement){
                              //把node强转为标签(Element)
                              treeWalk((Element)node);
                        }
                  }
            }
      }
    • public classTestDom4j {
            @Test
            publicvoidtest1()throwsException{
                  //创建一个xml解析对象
                  SAXReaderreader= new SAXReader();
                  //把xml文档加载到document对象中
                  Documentdocument= reader.read("src/Book.xml");
                  Elementroot= document.getRootElement();
      //          Element bookNode = root.element("书");
      //          System.out.println(bookNode.getName());
                  //得到当前节点所有的子节点
                  Listlist= root.elements();
                  //得到第二本书对象
                  ElementsecondBook= (Element)list.get(1);
                  //得到当前节点的文本内容
                  Stringname= secondBook.element("书名").getText();
                  System.out.println(name);
            }
    • 导入jar包 dom4j.jar

    • 创建解析器

    • 解析xml 获得document对象

    • SAXReader reader = new SAXReader()

    • Document document = reader.read(url)

    • JAXP sun公司提供的解析 支持dom和sax

    • JDOM

    • DOM4J dom for java民间方式,但是是事实方式,非常好,支持dom

    • 解析xml

    • XPATH 专门用于查询

以上がXML をより深く理解できるようになります。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。