• XML基础以及用DOM4j读取数据


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

      以下简单介绍XML相关的基础内容——命名空间、XSLDTDSchema

     

    1》基本结构

       

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

      Ø  <>成对。区分大写和小写

      Ø  顶层元素仅仅能有一个

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

     

    2》命名空间

      与我们编程语言中的命名空间类似。比如,假设想要建立两个名称同样的类,就必须将两个类置于不同的命名空间下。XML也类似,就是为了区分两个名称同样的元素时在元素前加上不同的前缀。

      比如以下的XLS文件里的第二句:<xsl:stylesheet version="1.0"xmlns:xsl="http://www.w3.org/TR/WD-xsl">

    中的xmlns代表xml namespacexml命名空间。

    此命名空间由xsl前缀来代表。后面的详细地址貌似没有实际的意义,不过为了赋予命名空间一个惟一的名称。

     

    3》XSL

      XSL----eXtensible Stylesheet Language(扩展样式表语言),事实上就是XML样式表,就像CSSHTML的样式表一样,用来修饰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(位于dom4jlib目录下,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那里分离数据,可被用来交换、共享以及存储数据。

  • 相关阅读:
    【区块链整理】四、区块链数据结构
    【区块链整理】三、以太坊挖矿算法 ETHASH
    【区块链整理】二、比特币交易脚本
    【区块链整理】一、概念
    FISCO BCOS CRUD 功能和 CNS 合约命名服务杂记
    前台静态资源打包ios
    叹而立之年,忆往昔旧事
    基于Bootstrap table组件实现多层表头配置
    js或jQuery获取当前屏幕的各种高度
    echarts图表基础配置
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/6684990.html
Copyright © 2020-2023  润新知