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文件拖入浏览器,或者用浏览器打开。
有错的显示
正确的显示
3. XML元素
XML元素是开始标签到结束标签的部分。
一个元素可以包含:
其他元素
文本
属性
以上的混合
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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。
评论