java的XML语法是什么及怎么使用(java,xml,编程语言)

时间:2024-04-28 17:02:17 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

接下来,请跟着小编一起来学习吧!

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

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

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

  • XML标签严格区分大小写

  • XML必须正确嵌套

  • XML中的属性必须加引号

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

  • XML中可以使用注释

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

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

  • 有错的显示

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

  • 正确的显示

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

3. XML元素

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

  1. 其他元素

  2. 文本

  3. 属性

  4. 以上的混合

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&quot;&gt;

</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&quot;
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&quot;&gt;
<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&quot;);
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语法是什么及怎么使用的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:java怎么通过TCP协议传输javabean对象下一篇:

9 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18