xml

xml定义
可扩展标记语言,标准通用标记语言的子集,一种用于标记电子文件使其具有结构性的标记语言。
它可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 它非常适合万维网传输,提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

一、什么是可扩展标记语言?
可扩展标记语言是一种很像超文本标记语言的标记语言。
它的设计宗旨是传输数据,而不是显示数据。
它的标签没有被预定义。您需要自行定义标签。
它被设计为具有自我描述性。
它是W3C的推荐标准。


二、可扩展标记语言和超文本标记语言之间的差异
它不是超文本标记语言的替代。
它是对超文本标记语言的补充。
它和超文本标记语言为不同的目的而设计:
它被设计用来传输和存储数据,其焦点是数据的内容。
超文本标记语言被设计用来显示数据,其焦点是数据的外观。
超文本标记语言旨在显示信息,而它旨在传输信息。
对它最好的描述是:它是独立于软件和硬件的信息传输工具。
3、可扩展标记语言是W3C的推荐标准
XML 于 1998 年 2 月 10 日成为 W3C 的推荐标准。
4、可扩展标记语言无所不在
目前,它在Web中起到的作用不会亚于一直作为Web基石的超文本标记语言。
XML 是各种应用程序之间进行数据传输的最常用的工具。

 

标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据
处理细节的电脑文字编码。当今广泛使用的标记语言是超文本标记语言(HyperText Markup Language,
HTML)和可扩展标记语言 (eXtensible Markup Language,XML)。

CDATA 类型的数据:特殊标签

1) 格式: < ! [ CDATA [ 文本内容 ] ] >
2) 特殊标签中的实体引用都被忽略,所有内容被当成一整块文本数据对待

 

1) 必须有唯一的根元素
2) xml 标记大小写敏感
3) 标记必须配对出现,有开始有结束
4) 元素必须被正确嵌套
5) 属性必须有值,值必须用引号引起来
6) 如果遵循所有的规则,称作格式良好的 xml 文件(well-formed)

现在使用 xml 表示方式
<datasource id="db_mysql">
<property name="url">jdbc:mysql://localhost:3306/wode</property>
<property name="dbUser">root</property>
<property name="dbPwd">admin</property>
</datasource>

DTD 类型
PUBLIC(行业共用的)
SYSTEM(小范围自定义的)
<!DOCTYPE books[
<!ELEMENT books (java*,javascript*,(phone|email)*)>
<!ELEMENT java (name,author,price)>
<!ELEMENT javascript (name,author,price)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT author (#PCDATA)>
<!ELEMENT price (#PCDATA)>
]>
必须列出所有节点,一个都不能少
* 0-n
至少有 1 个作者,多则不限
2) "+"加号表示出现 1-n 次

简介有没有都可以
2) "?"问号表示出现 0 或 1

读取xml

SAXReader reader=new SAXReader();---获得解析器
File f=new File("src/book.xml");---指定解析文件
//构造文档树并且返回
Document document=reader.read(f);
//获得根元素
Element rootElement=document.getRootElement();
获得book元素
List<Element> list=rootElement.elements("book");
Iterator<Element> it=list.iterator();
//打印信息
while(it.hasNext()){
Element e=it.next();
System.out.println(e.elementText("title"));
System.out.println(e.elementText("author"));
System.out.println(e.elementText("price"));
}


打印属性

while(it.hasNext()){
Element e=it.next();
List att=e.attributes();
Iterator attit=att.iterator();
while(attit.hasNext()){
Attribute atts=(Attribute) attit.next();
System.out.println(atts.getName()+" "+atts.getValue());
}

}

Iterator attit=e.attributeIterator();----简写,直接写入Iterator

posted on 2016-04-28 23:46  熠良  阅读(198)  评论(0编辑  收藏  举报

导航