java的XML语法是什么及怎么使用

这篇文章主要介绍“java的XML语法是什么及怎么使用”,在日常操作中,相信很多人在java的XML语法是什么及怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java的XML语法是什么及怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1. XML的基本语法
  • 有且只有一个根元素

  • XML文档声明必须放在文档的第一行

<?xml version="1.0" encoding="UTF-8"?>
  • 所有标签必须成对出现——有开始标签和结束标签

  • XML标签严格区分大小写

  • XML必须正确嵌套

  • XML中的属性必须加引号

  • XML中,一些特殊字符必须使用“实体”。

  • XML中可以使用注释

<!-- 这就是注释 -->
2. 可以使用浏览器来校验语法

将XML文件拖入浏览器,或者用浏览器打开。

  • 有错的显示

  • java的XML语法是什么及怎么使用  xml 第1张

  • 正确的显示

  • java的XML语法是什么及怎么使用  xml 第2张

3. XML元素

XML元素是开始标签到结束标签的部分。
一个元素可以包含:

  1. 其他元素

  2. 文本

  3. 属性

  4. 以上的混合

4. XML的命名规则
  • 名称可以包含字母,数字及其他字符。

  • 名称不能以数字或者标点符号开始。

  • 名称不能以字母xml开始。

  • 名称不能包含空格。

5. Schema
  • DTD文档类型定义
    用于验证一个XML文档是否有效。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE books [
        <!ELEMENT books (book*)>
        <!ELEMENT book (name,author,price)>
        <!ELEMENT name (#PCDATA)>
        <!ELEMENT author (#PCDATA)>
        <!ELEMENT price (#PCDATA)>
        <!ATTLIST book id CDATA #REQUIRED>
]>
<books>
    <book id="1001">
        <name>神雕侠侣</name>
        <author>金庸</author>
        <price>44.2</price>
    </book>
    <book id="1002">
        <name>倚天屠龙记</name>
        <author>金庸</author>
        <price>66.8</price>
    </book>
</books>
  • Schema
    是DTD的替代者,名叫XML Schema,用于描述XML文档结构,比DTD强大。XML Schema支持数据类型。

Schema使用XML来验证一个XML是否遵循XML语法
Schema可使用能处理XML文档的工具处理
Schema大大扩充了数据类型,而且还可以自定义数据类型。
Schema支持元素的继承
Schema支持属性组

Schema的文档结构

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    
</xs:schema>

所有的Schema文档都使用schema作为其根元素。
http://www.w3.org/2001/XMLSchema 用于验证当前Schema文档的命名空间(用于验证Schema本身)。xs是定义的前缀。

  • 如何使用Schema验证XML文件的有效性

XML文件:books.xml

<?xml version="1.0" encoding="UTF-8"?>
<books xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:noNamespaceSchemaLocation="books.xsd">
    <book id="1001">
        <name>神雕侠侣</name>
        <author>金庸</author>
        <price>44.2</price>
    </book>
    <book id="1002">
        <name>倚天屠龙记</name>
        <author>金庸</author>
        <price>66.8</price>
    </book>
</books>

Schema文件:books.xsd

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="books">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="book" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="name" type="xs:string"></xs:element>
                            <xs:element name="author" type="xs:string"></xs:element>
                            <xs:element name="price" type="xs:double"></xs:element>
                        </xs:sequence>
                        <xs:attribute name="id" type="xs:positiveInteger" use="required"></xs:attribute>
                    </xs:complexType>
                </xs:element>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

使用java根据schema来验证xml的有效性:

package demo;

import org.xml.sax.SAXException;

import javax.xml.transform.Source;
import javax.xml.transform.stream.StreamSource;
import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
import java.io.File;
import java.io.IOException;

public class TestXML {
    public static void main(String[] args) throws SAXException {
        SchemaFactory sch=SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
        File schemaFile=new File("src/demo/books.xsd");
        Schema schema=sch.newSchema(schemaFile);
        Validator validator=schema.newValidator();
        Source source=new StreamSource("src/demo/books.xml");
        try {
            validator.validate(source);
            System.out.println("检查成功");
        } catch (IOException e) {
            e.printStackTrace();
            System.out.println("验证失败");
        }
    }
}

验证失败将抛出异常。

6. XPATH
  • 软件包

dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar
  • 使用案例

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import java.util.List;

public class Test01 {
    public static void main(String[] args) throws DocumentException {
        SAXReader reader = new SAXReader();
        Document doc = reader.read("src/xpath/demo/books.xml");
        //取单个节点
        Node node = doc.selectSingleNode("//author");
        System.out.println("节点的名称:" + node.getName() + "\t" + node.getText());
        System.out.println("=========================");
        //取所有满足要求的节点
        List<Node> list = doc.selectNodes("//author");
        for (Node n : list) {
            System.out.println("节点的名称:" + n.getName() + "\t" + n.getText());
        }
        System.out.println("=========================");
        //选取属性
        List<Attribute> attrs = doc.selectNodes("//book/@id");
        for (Attribute attr : attrs) {
            System.out.println("属性的名称:" + attr.getName() + "\t" + attr.getText());
        }
    }
}

到此,关于“java的XML语法是什么及怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注蜗牛博客网站,小编会继续努力为大家带来更多实用的文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram