XML基础以及用DOM4j读取数据

  都知道,HTML被设计用来显示数据,XML被设计用来保存、传输数据。而我们平时经常用的无非是保存数据、读取数据。所以这里主要介绍XML相关基础内容,以及用DOM4j来存取XML的数据。

  下面简介XML相关的基础内容——命名空间、XSL、DTD与Schema

1》基本结构

   

   -------------------------

  ?  <>成对,区分大小写

  ?  顶层元素只能有一个

  ?  元素不能以xml开头,且不能有空格

2》命名空间

  与我们编程语言中的命名空间类似,例如,如果想要建立两个名称相同的类,就必须将两个类置于不同的命名空间下。XML也类似,就是为了区分两个名称相同的元素时在元素前加上不同的前缀。  例如下面的XLS文件中的第二句:<xsl:stylesheet
version="1.0"xmlns:xsl="http://www.w3.org/TR/WD-xsl">

中的xmlns代表xml namespace即xml命名空间。此命名空间由xsl前缀来代表。后面的具体地址貌似没有实际的意义,仅仅是为了赋予命名空间一个惟一的名称。

3》XSL

  XSL----eXtensible Stylesheet Language(扩展样式表语言),其实就是XML样式表,就像CSS是HTML的样式表一样,用来修饰XML的显示。使得其显示起来更规范、美观。例:

  XML未加XSL(样式表)修饰时在浏览器中的显示:

  

  XML加入XSL(样式表)修饰后在浏览器中的显示:

  

  XSL的内容如下:

<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/TR/WD-xsl">
    <xsl:template match="/">
    	<html>
    	    <head><title>学生信息</title></head>
    	    <body>
     	        <div align="center"><p>
    	            <xsl:value-of select="*/学校"/>
    	        </p></div>
    	    <xsl:apply-templates select="学生信息"/>
    	    </body>
    	</html>
    </xsl:template>
    <xsl:template match="学生信息">
        <p align="center">
        <table border="1">
            <tr>
                <td>编号</td>
    	        <td>姓名</td>
    	        <td>性别</td>
    	        <td>年龄</td>
            </tr>
            <xsl:for-each select="学生">
                <tr>
                    <td><xsl:value-of select="编号"/></td>
                    <td><xsl:value-of select="姓名"/></td>
                    <td><xsl:value-of select="性别"/></td>
                    <td><xsl:value-of select="年龄"/></td>
                </tr>
            </xsl:for-each>
        </table>
        </p>
    </xsl:template>

</xsl:stylesheet>

4》DTD与Schema

  ?  DTD----文档类型定义,用来定义XML文档必须遵循的语法、结构。它规定了标签的名称、顺序等只能是某种格式。目前已被Schema代替。

  ?  Schema----对XML的语法、结构比DTD有更准确的定义。可约定XML的标签和类型。

  它们可以对XML是否符合当前标准进行验证,例如:

  XML文档:(DocType指明所遵从的语法、结构规范标准)

<span style="color:#000000;"><?xml version="1.0" encoding="gb2312"?>
<!DOCTYPE 丛书 SYSTEM "book.dtd">
<丛书>
	<书籍>
		<名称>萍踪侠影</名称>
		<人>梁羽生</人>
		<价 unit="RMB">100.60</价>
	</书籍>
	<书>
		<名>岳阳楼记</名>
		<人>范仲淹</人>
		<价 unit="美元">76.8</价>
	</书>
</丛书></span>

  对应的DTD:

<span style="color:#000000;"><?xml version="1.0" encoding="gb2312"?>
<!ELEMENT 丛书 (书*)>
	<!ELEMENT 书 (名,人+,价*)>
		<!ELEMENT 名 (#PCDATA)>
		<!ELEMENT 人 (#PCDATA)>
			<!ATTLIST 人 gender CDATA 'male'>
		<!ELEMENT 价 (#PCDATA)>
			<!ATTLIST 价
				unit (RMB|美元|日元) 'RMB'></span>

  ?  ,间隔的属性要严格按顺序;空格间隔可以不按顺序

  ?  +号代表至少出现一次,*号代码出现0次或多次

  ?  没有+号和*号的必须出现一次

  对应的schema:

<span style="color:#000000;"><?xml version="1.0" encoding="gb2312"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="丛书">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="书">
					<xs:element name="名"  minoccurs="1"></xs:element>
					<xs:element name="人"></xs:element>
					<xs:element name="价">
						<xs:attribute name="unit">
							<xs:enumeration value="RMB"/>
							<xs:enumeration value="美元"/>
							<xs:enumeration value="日元"/>
						</xs:attribute>
					</xs:element>
				</xs:element>
		</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema></span>

5》DOM4j读取XML

  由名字可知它是用dom
的方式解析xml文件,基础用法如下:

  首先引入两个jar包:

    ? 
dom4j-1.6.1.jar

    ? jaxen-1.1-beta-6.jar(位于dom4j的lib文件夹下,XPath必备

  实例-读取如下配置文件:(sys-config.xml):

<?xml version="1.0" encoding="UTF-8"?>
<config>
	<db-info>
		<driver-name>oracle.jdbc.driver.OracleDriver</driver-name>
		<url>jdbc:oracle:thin:@localhost:1521:bjpowern</url>
		<user-name uid="zhipeng"/>
		<password pwd="zhipeng"/>
	</db-info>
</config>

  读取文件:

	<span style="font-size:14px;">SAXReader reader = new SAXReader();
	InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml");
	Document doc = reader.read(in);</span>

  读取节点对象:(采用XPath读取)

	<span style="font-size:14px;">Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");
	Element urlElt = (Element)doc.selectObject("/config/db-info/url");
	Element userNameElt = (Element)doc.selectObject("/config/db-info/user-name");
	Element passwordElt = (Element)doc.selectObject("/config/db-info/password");</span>

  读取节点对象的值或属性:

	<span style="font-size:14px;">//获取节点的值
	string driverName = driverNameElt.getStringValue();
	string url = urlElt.getStringValue();
	//获取节点的属性
	string userName = userNameElt.attribute("uid");
	string password = passwordElt.attribute("pwd");</span>

6》总结

  XML 是各种应用程序之间进行数据传输的最常用的工具。它应当用来从 HTML那里分离数据,可被用来交换、共享以及存储数据。

XML基础以及用DOM4j读取数据,布布扣,bubuko.com

时间: 2024-12-21 20:01:34

XML基础以及用DOM4j读取数据的相关文章

《程序实现》从xml、txt文件里读取数据写入excel表格

直接上码 import java.io.BufferedReader; import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; impo

SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据,并以一定的格式显示(加css样式)

SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据,并以一定的格式显示(加css样式) 分类: SharePoint2011-12-22 15:13 1974人阅读 评论(2) 收藏 举报 sharepointcss2010classbordernull SharePoint2010沙盒解决方案基础开发——开发webpart读取绑定列表数据,并以一定的格式显示(加css样式) 注:此实例无需添加数据控件,避免了一些繁琐的代码 实现效果如下: 读取数据和图片,并

Dom4j 读取一个XML文件和将String写成XML文件

dom4j保存文件xml格式和读取XML文件内容,代码如下: package com.qmjs.imut import java.io.File; import java.io.FileWriter; import java.io.IOException; import java.io.InputStream; import org.apache.log4j.Logger; import org.dom4j.Document; import org.dom4j.DocumentHelper; i

Unity基础 用C#脚本读取JSON文件数据

读取JSON文件数据网上有很多方法吗,这里采用SimpleJSON,关于SimpleJSON的介绍参考以下链接:http://wiki.unity3d.com/index.php/SimpleJSON,使用之前要先导入SimpleJSON的相关文件. JSON文件名:achieve.json,文件内容: { "30002":{"achieve_id":30002,"achieve_name":"连胜","achiev

dom4j解析XML文件(2)—读取XML文件

Emp.xml: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <list> 3 <emp id="1"> 4 <name>张三</name> 5 <age>34</age> 6 <gender>男</gender> 7 <salary>3000</salary> 8 <

利用反射与dom4j读取javabean生成对应XML和读取XML得到对应的javabean对象集合

转自:http://blog.csdn.net/zhao19861029/article/details/8473245 首先实现生成对应的JAVAbean的XML文件方法 /** * DMO4J写入XML * @param obj 泛型对象 * @param entityPropertys 泛型对象的List集合 * @param Encode XML自定义编码类型(推荐使用GBK) * @param XMLPathAndName XML文件的路径及文件名 */ public void wri

从多个XML文档中读取数据用于显示webapi帮助文档

前言: 你先得知道HelpPageConfig文件,不知道说明你现在不需要这个,所以下文就不用看了,等知道了再看也不急.当然如果你很知道这个,下文也不用看了,因为你会了. 方法一: new XmlDocumentationProvider(HttpContext.Current.Server.MapPath("~/App_Data/Documentation.xml")) 替换成 new XmlDocumentationProvider("PluginsFolder/*.xm

php操作XML,读取数据和写入数据的方法

xml文件 <?xml version="1.0" encoding="utf-8"?> <vip> <id>23</id> <username>开心的路飞</username> <sex>男</sex> <face>face/43.jpg</face> <email>[email protected]</email> &l

Dom4j读取xml文件——JAVA

前几天,用Dom4j写了三个版本的读取XML文件,现在分享下. 第一版本: XML: <?xml version="1.0" encoding="UTF-8"?> <do-config> <do path="User/adduser" type="UserPackage.UserServlet"> <forward name="Success">AddSucc