java的XML语法是什么及怎么使用
导读:本文共4501字符,通常情况下阅读需要15分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要:接下来,请跟着小编一起来学习吧!1. XML的基本语法有且只有一个根元素XML文档声明必须放在文档的第一行<?xmlversion="1.0"encoding="UTF-8"?>所有标签必须成对出现——有开始标签和结束标签XML标签严格区分大小写XML必须正确嵌套XML中的属性必须加引号XML中,一些特殊字符必须使用“实体”。XML中可以使用注释... ...
目录
(为您整理了一些要点),点击可以直达。接下来,请跟着小编一起来学习吧!
1. XML的基本语法
有且只有一个根元素
XML文档声明必须放在文档的第一行
<?xmlversion="1.0"encoding="UTF-8"?>
所有标签必须成对出现——有开始标签和结束标签
XML标签严格区分大小写
XML必须正确嵌套
XML中的属性必须加引号
XML中,一些特殊字符必须使用“实体”。
XML中可以使用注释
<!--这就是注释-->
2. 可以使用浏览器来校验语法
将XML文件拖入浏览器,或者用浏览器打开。
有错的显示
正确的显示
3. XML元素
XML元素是开始标签到结束标签的部分。
一个元素可以包含:
其他元素
文本
属性
以上的混合
4. XML的命名规则
名称可以包含字母,数字及其他字符。
名称不能以数字或者标点符号开始。
名称不能以字母xml开始。
名称不能包含空格。
5. Schema
DTD文档类型定义
用于验证一个XML文档是否有效。
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEbooks[
<!ELEMENTbooks(book*)>
<!ELEMENTbook(name,author,price)>
<!ELEMENTname(#PCDATA)>
<!ELEMENTauthor(#PCDATA)>
<!ELEMENTprice(#PCDATA)>
<!ATTLISTbookidCDATA#REQUIRED>
]>
<books>
<bookid="1001">
<name>神雕侠侣</name>
<author>金庸</author>
<price>44.2</price>
</book>
<bookid="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的文档结构
<?xmlversion="1.0"encoding="UTF-8"?>
<xs:schemaxmlns: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
<?xmlversion="1.0"encoding="UTF-8"?>
<booksxmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="books.xsd">
<bookid="1001">
<name>神雕侠侣</name>
<author>金庸</author>
<price>44.2</price>
</book>
<bookid="1002">
<name>倚天屠龙记</name>
<author>金庸</author>
<price>66.8</price>
</book>
</books>
Schema文件:books.xsd
<?xmlversion="1.0"encoding="UTF-8"?>
<xs:schemaxmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:elementname="books">
<xs:complexType>
<xs:sequence>
<xs:elementname="book"maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:elementname="name"type="xs:string"></xs:element>
<xs:elementname="author"type="xs:string"></xs:element>
<xs:elementname="price"type="xs:double"></xs:element>
</xs:sequence>
<xs:attributename="id"type="xs:positiveInteger"use="required"></xs:attribute>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
使用java根据schema来验证xml的有效性:
packagedemo;importorg.xml.sax.SAXException;
importjavax.xml.transform.Source;
importjavax.xml.transform.stream.StreamSource;
importjavax.xml.validation.Schema;
importjavax.xml.validation.SchemaFactory;
importjavax.xml.validation.Validator;
importjava.io.File;
importjava.io.IOException;publicclassTestXML{
publicstaticvoidmain(String[]args)throwsSAXException{
SchemaFactorysch=SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");
FileschemaFile=newFile("src/demo/books.xsd");
Schemaschema=sch.newSchema(schemaFile);
Validatorvalidator=schema.newValidator();
Sourcesource=newStreamSource("src/demo/books.xml");
try{
validator.validate(source);
System.out.println("检查成功");
}catch(IOExceptione){
e.printStackTrace();
System.out.println("验证失败");
}
}
}
验证失败将抛出异常。
6. XPATH
软件包
dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar
使用案例
importorg.dom4j.Attribute;若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!
importorg.dom4j.Document;
importorg.dom4j.DocumentException;
importorg.dom4j.Node;
importorg.dom4j.io.SAXReader;
importjava.util.List;publicclassTest01{
publicstaticvoidmain(String[]args)throwsDocumentException{
SAXReaderreader=newSAXReader();
Documentdoc=reader.read("src/xpath/demo/books.xml");
//取单个节点
Nodenode=doc.selectSingleNode("//author");
System.out.println("节点的名称:"+node.getName()+"\t"+node.getText());
System.out.println("=========================");
//取所有满足要求的节点
List<Node>list=doc.selectNodes("//author");
for(Noden:list){
System.out.println("节点的名称:"+n.getName()+"\t"+n.getText());
}
System.out.println("=========================");
//选取属性
List<Attribute>attrs=doc.selectNodes("//book/@id");
for(Attributeattr:attrs){
System.out.println("属性的名称:"+attr.getName()+"\t"+attr.getText());
}
}
}
java的XML语法是什么及怎么使用的详细内容,希望对您有所帮助,信息来源于网络。