[XML] XML superficial

Tabla de contenido

1. Introducción a XML

Dos, sintaxis XML

     1. Declaración del documento

     2. Etiqueta (elemento)

     3. Propiedades

     4. Notas

     5. Área CDATA

Tres, restricciones XML

      1. Restricciones DTD

          1.1 Formato del documento

          1.2 Comprensión de los elementos de restricción

          1.3 Tipo de etiqueta

          1.4 Cuantificador

         1.5 Declaración de propiedad

     2. Restricciones del esquema

          2.1 Formato del documento

Cuatro, análisis XML

      1. Tres métodos analíticos

      2. Herramientas de análisis

     3. Principio de análisis y modelo estructural 

     4. Uso y métodos de DOM4J y XPath

          4.1 Métodos comunes

           4.2 Uso de XPath


1. Introducción a XML

       XML: su nombre completo --- "Lenguaje de edición (etiqueta) extensible. Es un idioma independiente con sus propias reglas gramaticales . Es esencialmente un "archivo de texto sin formato". XML está diseñado para transmitir datos, no mostrar datos, y las etiquetas XML no están predefinidas, podemos definir las etiquetas por nosotros mismos

Dos, sintaxis XML

Los principales componentes de la sintaxis XML: declaración de documento, etiquetas, atributos, comentarios, caracteres de escape y área CDATA

     1. Declaración del documento

formato:

<?xml version = “1.0(或者1.1)"  encoding = “UTF-8" ?>

efecto:

La declaración del documento es para que la vean el editor y el analizador del archivo XML, y se utiliza para identificar la sintaxis de la versión y la codificación del XML.

Precauciones:

1. Un documento XML estándar generalmente se define en 0 filas y 0 columnas.

2. No se requiere la declaración del documento.

     2. Etiqueta (elemento)

Etiquetas: también llamadas "etiquetas, elementos", son una parte importante de XML

formato:

1) Etiqueta completa: ----》 <nombre> James <nombre>

2) Etiqueta única (cierre automático y etiqueta)   : ----》 <atributo del estudiante = "valor del atributo" edad = "18" /> sin cuerpo de etiqueta

Precauciones:

1) El nombre de la etiqueta solo puede contener: letras (incluido el chino), números y cuatro símbolos (_, -,:,.)

2) Los números y símbolos no pueden comenzar, y no puede haber "espacios" entre ellos [Intente comenzar en inglés y terminar en inglés, no lleve chino, números, símbolos, etc.]

3) Las etiquetas XML distinguen entre mayúsculas y minúsculas

4) Las etiquetas se pueden anidar

Ejemplo:

<students>
    <student>
        <name>张三</name>
    </student>
</students>

     3. Propiedades

formato:

Los atributos se pueden definir para cualquier etiqueta, las etiquetas completas solo se pueden escribir en la etiqueta de inicio, el cierre automático y las etiquetas no se pueden escribir después de /

Precauciones:

1) El valor del atributo debe estar entre comillas dobles o simples

2) Una etiqueta puede tener varios atributos, pero no puede tener el mismo nombre

3) Una etiqueta puede definir varios atributos, y cada atributo debe estar separado por "" espacio ""

<student id = “it001" name = “张三" age = “18" sex = “男"/>

     4. Notas

formato:

<! - Contenido del comentario ->

Precauciones:

1) No se pueden escribir comentarios en el "nombre de la etiqueta"

2) El maestro no se puede anidar

<!-- 学员信息-->
<students>
    <student>
        <!-- 学员信息-->
        <name>张三</name>
        <age>19</age>
    </student>
</student>

     5. Área CDATA

En XML, hay algunos símbolos clave únicos, como (>, <, &, etc.). Este tipo de carácter es fácil de afectar la codificación de XML. Una forma de resolver este problema es utilizar el delimitador de conversión: varias conversiones de uso común. La definición es la siguiente:

                

Otra solución es escribir el contenido XML en el área CDATA :

        Todo el contenido del área CDATA se considera texto sin símbolos especiales.

<![CDATA[
        String str = “fjdsEFeafeEW1432”;
        int count = 0;
        for(int i = 0;i < str.length() ; i++){
            char c = str.charAt(i);
            if(c >= ‘0’ && c <= ‘9’){
                count++;
            }
        }
        System.out.println(“count = “ + count);
]]>

Tres, restricciones XML

        Restricciones de XML: en nuestra aplicación de XML, XML debe tener algunas restricciones para estandarizar XML. En el proceso de solicitud, hay dos tipos de restricciones: una es restricción DTD y la otra es restricción de esquema.

         Restricción DTD: pertenece a la restricción de la versión anterior, la sintaxis es simple, la función es relativamente única y es adecuada para algunos documentos pequeños y simples.

         Restricción de esquema: pertenece a la restricción de nueva versión, con sintaxis compleja y funciones potentes. Adecuado para algunos documentos grandes y complejos

          Las restricciones se pueden utilizar para restringir:

          1) Las etiquetas que pueden aparecer en el documento 2) La relación de inclusión entre etiquetas                                              

          3) El orden en que aparecen las etiquetas 4) La frecuencia de las etiquetas, etc.

      1. Restricciones DTD

          1.1 Formato del documento

<?xml version="1.0" encoding="UTF-8" ?>
<!--
    在需要使用此dtd的xml中引入约束
    <!DOCTYPE 书架 SYSTEM "book.dtd">
-->
<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)><!--约束元素书的子元素必须为书名、作者、售价-->
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>

Utilice las siguientes declaraciones en XML para introducir restricciones:

<!DOCTYPE 书架 SYSTEM "book.dtd">

Entonces puede comenzar a escribir el contenido del archivo XML:

<?xml version="1.0" encoding="utf-8" ?><!--文档声明-->
<!DOCTYPE 书架 SYSTEM "book.dtd"><!--引入DTD约束-->
<书架>
    <书>
        <书名></书名>
        <作者></作者>
        <售价></售价>
    </书>
</书架>

          1.2 Comprensión de los elementos de restricción

<?xml version="1.0" encoding="UTF-8" ?>
<!--
    在需要使用此dtd的xml中引入约束
    <!DOCTYPE 书架 SYSTEM "book.dtd">
-->
<!ELEMENT 书架 (书+)><!--约束根元素是“书架”,“书架的子元素为书,”,“+”为数量词-->
<!ELEMENT 书 (书名,作者,售价)><!--约束元素书的子元素必须为书名、作者、售价-->
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>

          1.3 Tipo de etiqueta

Tipo de etiqueta
Tipo de etiqueta Escritura de código Descripción
PCDATA (#PCDATA) Datos de cadena interpretados
VACÍO VACÍO Elemento vacio
ALGUNA ALGUNA Cualquier tipo
<!ELEMENT 售价 (#PCDATA)> <!--"售价"元素体为字符串数据-->
<!ELEMENT 出版日期 ANY> <!--"出版日期"元素体为任意类型-->
<!ELEMENT 版本号 EMPTY> <!--"版本号"元素体为空元素

          1.4 Cuantificador

Cuantificador
Cuantificador sentido
* Los elementos pueden aparecer 0 ~ múltiples
+ Los elementos pueden aparecer 1 ~ múltiples
Los elementos pueden ser 0 o 1
Los elementos se muestran en orden
| El elemento debe seleccionar uno de ellos.

         1.5 Declaración de propiedad

<!ATTLIST 标签名称
       属性名称  属性类型    属性说明>
Tipo de atributo
Tipo de atributo sentido
CDATA El atributo es una cadena de texto
CARNÉ DE IDENTIDAD El valor del atributo es único y no puede comenzar con un número.
ENUMERADO Enumeración dentro del alcance de ejecución
Descripción de propiedad
Descripción de propiedad sentido
#NECESARIO El atributo debe tener
#IMPLÍCITO Los atributos son opcionales
#FIJO Valor fijo de la propiedad
<!ATTLIST 书                                <!--设置"书"元素的的属性列表-->
        id ID #REQUIRED                     <!--"id"属性值为必须有-->
        编号 CDATA #IMPLIED                  <!--"编号"属性可有可无-->
        出版社 (清华|北大|传智播客) "传智播客" <!--"出版社"属性值是枚举值,默认为“传智播客”-->
        type CDATA #FIXED "IT"              <!--"type"属性为文本字符串并且固定值为"IT"-->
>

     2. Restricciones del esquema

Gramática simple, presentada más adelante

          2.1 Formato del documento

<?xml version="1.0" encoding="UTF-8" ?>
<!--
	将注释中的以下内容复制到要编写的xml的声明下面
	复制内容如下:
	<书架 xmlns="http://www.itcast.cn"
		  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
		  xsi:schemaLocation="http://www.itcast.cn bookshelf.xsd"
    >
 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
           targetNamespace="http://www.itcast.cn"
           elementFormDefault="qualified">
    <xs:element name='书架' >
        <xs:complexType>
            <xs:sequence maxOccurs='unbounded' >
                <xs:element name='书' >
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name='书名' type='xs:string' />
                            <xs:element name='作者' type='xs:string' />
                            <xs:element name='售价' type='xs:double' />
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

restricción de schame: capaz de restringir el tipo de datos

Cuatro, análisis XML

      1. Tres métodos analíticos

1. Análisis DOM: lea todo el contenido del documento en la memoria a la vez y genere un modelo de árbol DOM en la memoria.

[Ventajas: puede agregar o eliminar elementos. Desventajas: procesamiento lento y uso de memoria, solo apto para archivos pequeños]

2. Análisis SAX: lea una línea a la vez, analice una línea (solo lectura)

[Beneficios: procesamiento rápido, sin uso de memoria. Desventajas: no hay estructura de documento, por lo que no puede agregar ni eliminar el contenido del documento]

3. Análisis PULL: método de análisis de Android

      2. Herramientas de análisis

1) Análisis de JAXP: la herramienta de análisis que viene con el JDK es primitiva y de bajo nivel, por lo que es inconveniente de usar

2) Análisis JSOUP: análisis de HTML (rastreador web)

3) Análisis JDOM: hermano de DOM4J, la función es relativamente débil, rara vez se usa

4) Análisis de DOM4J: una de las herramientas de análisis de XML más utilizadas, que combina internamente métodos de análisis de DOM y SAX

     3. Principio de análisis y modelo estructural 

        Principio de análisis : XML DOM es lo mismo que HTML DOM. El archivo XML se carga en la memoria, se genera un árbol DOM y se obtiene un objeto Documento. El DOM se puede operar a través del objeto Documento.

Modelo de estructura:

                        

     4. Uso y métodos de DOM4J y XPath

Pasos de uso:

    1) dom4j es un "paquete" de terceros

    Enlace: https://pan.baidu.com/s/1SPxnd7yP_SsgygNKee9Qsw 
    Código de extracción: kcv6

    2) Copie el paquete jar dom4j en el directorio del módulo, luego haga clic derecho para agregarlo a la biblioteca de clases (agregar como biblioteca)

          4.1 Métodos comunes

Método de construcción
método efecto
nuevo SAXReader Crear un objeto saxreader (método de construcción)
Documento leído (URL de cadena) Cargar y ejecutar documento xml
Objeto de documento
método efecto
Elemento getRootElement () Obtener el elemento raíz
Objeto elemento
método efecto
Lista de elementos <Element> ([String element]) Obtenga los elementos secundarios del elemento raíz (puede especificar o no especificar el nombre del elemento raíz)
Elemento elemento ([elemento de cadena]) Obtenga el primer elemento secundario (puede especificar o no especificar el nombre del elemento)
string getName () Obtener el nombre del elemento actual
string attributeValue (string attrName) Obtener el valor de atributo del nombre de atributo especificado
string elementText (string element) Obtener el valor de texto del elemento de nombre especificado
string getText () Obtener el contenido de texto del elemento actual
public class Test {
    public static void main(String[] args) throws DocumentException {
        //3、利用类加载器创建InputStream流对象
        InputStream in = Test.class.getClassLoader().getResourceAsStream("books.xml");
        //1、创建saxReader对象
        SAXReader saxReader = new SAXReader();
        //2、读取xml文件,获取DOM对象
        Document document = saxReader.read(in);
        //4、获取XML文件的根目录
        Element rootElement = document.getRootElement();

        //5、通过根元素对象获取子元素对象
        List<Element> listElements = rootElement.elements();
        //6、遍历子元素对象
        for (Element listElement : listElements) {
            //获取子元素的id属性名
            /*Attribute name = listElement.attribute("id");
            String value = name.getValue();
            System.out.println(value);
            */
            //获取子元素的子元素
            //  List<Element> elements = listElement.elements();
            // // //遍历子元素集合
            // for (Element childElement : elements) {
            //     //获取指定标签的文本数据
            //     // System.out.println(childElement.getText());//1
            //     // System.out.println(childElement.getStringValue());//2
            // }
            //3、根据名称获取元素
            Element name = listElement.element("name");
            //根据元素获取标签数据
            String text = name.getText();
            //输出值
            System.out.println(text);
            // 4、
            // System.out.println(listElement.elementText("name"));
        }
    }
}

           4.2 Uso de XPath

在DOM4J的基础上,在此导入jaxen-1.1-beta-6.jar包

链接:https://pan.baidu.com/s/1Q5QgiVsdz-v1U-ThpC-gag 
提取码:0lix

可以直接写出想要获取文本信息的路径,然后使用selectISingleNode就可以获取:

public class Test {
    public static void main(String[] args) throws DocumentException {
        //3、利用类加载器创建输出流对象
        InputStream in = Test.class.getClassLoader().getResourceAsStream("books.xml");
        //1、创建 Saxreader对象
        SAXReader saxReader = new SAXReader();
        //2、读取xml文件,获取DOM对象
        Document document = saxReader.read(in);
        //4、获取xml文件的根元素
        Element rootElement = document.getRootElement();
        //5、获取指定标签的文本数据
        Node node = rootElement.selectSingleNode("/books/book/name");
        //6、获取节点的文本数据并解析
        System.out.println(node.getText());
    }
}

 

Supongo que te gusta

Origin blog.csdn.net/weixin_43267344/article/details/108268887
Recomendado
Clasificación