JAVAWeb(1)——XML

编程入门 行业动态 更新时间:2024-10-08 22:21:35

<a href=https://www.elefans.com/category/jswz/34/1769548.html style=JAVAWeb(1)——XML"/>

JAVAWeb(1)——XML

1.XML介绍:
extendsible markup langange 可扩展的标记语言
跨平台、可扩展、基于文本的描述数据的标准。
1.可以用来存放数据(一般使用数据库存放数据)
2.可以用来做配置文件
3.数据传输载体
2.XML的文档声明

<?xml version="1.0" encoding="UTF-8"?>

3.XXML的元素定义

<?xml version="1.0" encoding="UTF-8"?>
<stu>
<name>张三</name>
<age/>
</stu>

1.其实就是 里面的标签,<>括起来的都叫元素。成对出现。
2.文档声明下来的第一个元素叫做根元素 (根标签)
3.标签里面可以嵌套标签
4.空标签
既是开始也是结束。- 般配合属性来用。

5.标签可以自定义。
4.属性的定义

属性的定义  <元素名称属性名称="属性的值" ></元素名称>
<?xml version="1.0" encoding="UTF-8"?>
<stu id="10090">
<name>张三</name>
<age>23</age>
</stu>

5XML的注释
xml的注释,不允许放置在文档的第一行。必须在 文档声明的下面。
6.CDATA区

  • 非法字符

    严格地讲,在 XML 中仅有字符 “<“和”&” 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。

  <   &lt;&   &amp;

如果某段字符串里面有过多的字符, 并且里面包含了类似标签或者关键字的这种文字,不想让xml的解析器去解析。 那么可以使用CDATA来包装。 不过这个CDATA 一般比较少看到。 通常在服务器给客户端返回数据的时候。

<desc><![CDATA[<a href="">我是百度浏览器</a>]]></desc>

7XML解析方式

有很多种,但是常用的有两种。

  • DOM:
    document object model把整个xm|全部读到内存当中,形成树状
    结构。 整个文档称之为document对象,属性对应Attribute对象,所有的元素节点对应Element对象,文本也可以称之为Text对象,以上所有对象都可以称之为Node节点。如果xml文件特别大,会造成内存溢出。

  • SAX
    Simple API for Xml基于事件驱动。读取一行,解析一行。
    不会造成内存溢出。不可以进行增删 , 只能查询
    8针对这两种解析方式的API
    jaxp sun公司
    jdom
    dom4j 广泛使用
package com.guada.xmltest;import java.io.File;import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class xmltestDemo {/*** @param args*/public static void main(String[] args) {try {//1.创建SAX读取对象SAXReader reader = new SAXReader();//2.读取指定的xmlDocument document = reader.read(new File("E:\\JAVA代码\\XmlDemo\\src\\com\\guada\\xml\\demoxml.xml"));//3.获取元素Element rootElement = document.getRootElement();System.out.println(rootElement.getName());} catch (DocumentException e) {e.printStackTrace();}}}

9.dom4j里面支持xpath的写法。
xpath其实是xm1的路径语言 。支持我们在解析xm1的时候,能够快
速的定位到具体的某一个元素。

  1. 添加jar包依赖

    jaxen-1.1-beta-6.jar

  2. 在查找指定节点的时候,根据XPath语法规则来查找

  3. 后续的代码与以前的解析代码一样。

public class xmltestDemo {/*** @param args*/public static void main(String[] args) {try {//1.创建SAX读取对象SAXReader reader = new SAXReader();//2.读取指定的xmlDocument document = reader.read(new File("E:\\JAVA代码\\XmlDemo\\src\\com\\guada\\xml\\demoxml.xml"));//3.获取根元素Element rootElement = document.getRootElement();//4.使用XpathList<Element> nameElement = rootElement.selectNodes("//name");for (Element element : nameElement) {System.out.println(element.getText());}} catch (DocumentException e) {e.printStackTrace();}}}

10XML 约束

  • DTD
    语法自成一派, 早起就出现的。 可读性比较差。
  1. 引入网络上的DTD

    1. 引入本地的DTD

  2. 直接在XML里面嵌入DTD的约束规则

     <!ELEMENT stu (name,age)><!ELEMENT name (#PCDATA)><!ELEMENT age (#PCDATA)>
    

    ]>

    张三 18
     <!ELEMENT stus (stu)>  : stus 下面有一个元素 stu  , 但是只有一个<!ELEMENT stu (name , age)>  stu下面有两个元素 name  ,age  顺序必须name-age<!ELEMENT name (#PCDATA)> <!ELEMENT age (#PCDATA)><!ATTLIST stu id CDATA #IMPLIED> stu有一个属性 文本类型, 该属性可有可无元素的个数:+ 一个或多个*  零个或多个? 零个或一个属性的类型定义 CDATA : 属性是普通文字ID : 属性的值必须唯一<!ELEMENT stu (name , age)>		按照顺序来 <!ELEMENT stu (name | age)>   两个中只能包含一个子元素
    
  • Schema
    其实就是一个xml , 使用xml的语法规则, xml解析器解析起来比较方便 , 是为了替代DTD 。
    但是Schema 约束文本内容比DTD的内容还要多。 所以目前也没有真正意义上的替代DTD

    约束文档:

<!-- xmlns  :  xml namespace : 名称空间 /  命名空间targetNamespace :  目标名称空间 。 下面定义的那些元素都与这个名称空间绑定上。 elementFormDefault : 元素的格式化情况。  --><schema xmlns="" targetNamespace="" elementFormDefault="qualified"><element name="teachers"><complexType><sequence maxOccurs="unbounded"><!-- 这是一个复杂元素 --><element name="teacher"><complexType><sequence><!-- 以下两个是简单元素 --><element name="name" type="string"></element><element name="age" type="int"></element></sequence></complexType></element></sequence></complexType></element></schema>
实例文档:
<?xml version="1.0" encoding="UTF-8"?><!-- xmlns:xsi : 这里必须是这样的写法,也就是这个值已经固定了。xmlns : 这里是名称空间,也固定了,写的是schema里面的顶部目标名称空间xsi:schemaLocation : 有两段: 前半段是名称空间,也是目标空间的值 , 后面是约束文档的路径。--><teachersxmlns:xsi=""xmlns=""xsi:schemaLocation=" teacher.xsd"><teacher><name>zhangsan</name><age>19</age></teacher><teacher><name>lisi</name><age>29</age></teacher><teacher><name>lisi</name><age>29</age></teacher></teachers>

11名称空间的作用

一个xml如果想指定它的约束规则, 假设使用的是DTD ,那么这个xml只能指定一个DTD , 不能指定多个DTD 。 但是如果一个xml的约束是定义在schema里面,并且是多个schema,那么是可以的。简单的说: 一个xml 可以引用多个schema约束。 但是只能引用一个DTD约束。

名称空间的作用就是在 写元素的时候,可以指定该元素使用的是哪一套约束规则。 默认情况下 ,如果只有一套规则,那么都可以这么写

<name>张三</name><aa:name></aa:name><bb:name></bb:name>

更多推荐

JAVAWeb(1)——XML

本文发布于:2024-02-13 14:56:44,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1759106.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:JAVAWeb   XML

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!