这篇文章主要介绍“java的XML语法是什么及怎么使用”,在日常操作中,相信很多人在java的XML语法是什么及怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java的XML语法是什么及怎么使用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
有且只有一个根元素
XML文档声明必须放在文档的第一行
<?xml version="1.0" encoding="UTF-8"?>
所有标签必须成对出现——有开始标签和结束标签
XML标签严格区分大小写
XML必须正确嵌套
XML中的属性必须加引号
XML中,一些特殊字符必须使用“实体”。
XML中可以使用注释
<!-- 这就是注释 -->
将XML文件拖入浏览器,或者用浏览器打开。
有错的显示
正确的显示
XML元素是开始标签到结束标签的部分。
一个元素可以包含:
其他元素
文本
属性
以上的混合
名称可以包含字母,数字及其他字符。
名称不能以数字或者标点符号开始。
名称不能以字母xml开始。
名称不能包含空格。
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("验证失败");
}
}
}
验证失败将抛出异常。
软件包
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语法是什么及怎么使用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
原文链接:https://blog.51cto.com/u_15812550/5725093