java 怎么把xml解析成Html格式,急

html-css039

java 怎么把xml解析成Html格式,急,第1张

其实解析XML有两种方式,一种叫DOM,一种就是SAX。

其中DOM的解析方式是一次性把XML读入到内存中,然后按照XML的结构在内存中生成一颗DOM树,这样你可以从XML的根节点开始访问XML的每一个节点。但是种方式因为要把XML一次性全部读入内存,所以内存的消耗是很大的。如果XML很大的话,不建议使用这种方式。

SAX比较灵活,它是一个标签,一个标签的解析,每解析一个标签的时候就会调用相应的一个函数。已经解析过的标签,就被程序丢掉了(除非用你自己的方式把它记下来)。给你举个例子,比如有这样一个xml文件:

<年级

名称=“一年级”>

<班级

名称=“一班”>

<班主任

名称=“XXX”/>

班级

<班级

名称=“二班”>

<班主任

姓名=“YYY”>

班级

年级

对于这个XML,SAX的解析方式是,首先遇到"年级"标签,然后调用函数startElement(),在这个方法里,你可以读取“年级”标签的名称是“一年级”,然后往下执行,读到了班级,这个时候程序会再次自动的触发startElement()方法,然后得到班级的名称,这个时候已经读取的“年级”的信息就不存在了。后面的标签以此类推。

当读到

班级

标签的时候,程序会自动出发endElement()方法。当然读到

年级

的时候也会触发这个方法。

总的来说,程序对XML每做一次进一步的操作,就会触发一个相应的函数,触发的这个函数叫做回调函数(其实不知道它是回调函数也没关系)。个人感觉整个解析的过程就类似于对栈的操作。

解释的很粗浅,因为如果真正要把这个问题说明白很麻烦,不过希望这个解释能给你帮助

:)

请参考

两种方法可以将XML转为Html:第一种是用Javascript输出Html;第二种是利用XSLT语言,将XML内容转换成Html显示出来。XSL语言 XSL语言的全称是EXtensible Stylesheet Language,中文是指扩展样式表语言。它是为了XML语言而存在的。 如果说CSS是Html语言的样式表,用来定义Html,控制Html显示。那么XSL就是为了描述XML文档而存在的,是XML语言的样式表,它的功能相似于CSS对于Html的作用。 XSLT语言 XSLT 指 XSL 转换(XSL Transformations)。 上面说到XSL语言是为了XML存在的,但XSL不仅仅是样式表。它包括三部分:XSLT、XPath、XSL-FO。 XSLT:一种用于转换 XML 文档的语言。 XPath:一种用于在 XML 文档中导航的语言。 XSL-FO一种用于格式化 XML 文档的语言。

以下是用dom4j来解析xml文件的,如果要运行以下代码,必须导入dom4j的jar包。

import java.io.File

import java.util.Iterator

import org.dom4j.Document

import org.dom4j.DocumentHelper

import org.dom4j.Element

import org.dom4j.io.SAXReader

public class DomTest {

/**

* @param args

*/

public static void main(String[] args) {

try {

//读取xml文件信息

File inputXml=new File("D:/test.xml")

SAXReader saxReader = new SAXReader()

Document document = saxReader.read(inputXml)

//获取根节点<xml>元素

Element root = document.getRootElement()

//创建xml文档

Document doc = DocumentHelper.createDocument()

//创建表格的根节点<table>元素

Element rootElement = DocumentHelper.createElement("table")

doc.setRootElement(rootElement)

//获取根节点<xml>元素的子节点<row>元素列表

Iterator iter = root.elementIterator("row")

//循环列表

while(iter.hasNext()) {

//得到每个<row>元素

Element rowEle=(Element)iter.next()

//创建表格中的行<tr>元素

Element trElement = rootElement.addElement("tr")

//创建表格中行<tr>元素的子元素列<td>元素

//第一列存储<row>元素的ballsnum属性值

Element ballsnum = trElement.addElement("td")

ballsnum.addText(rowEle.attributeValue("ballsnum"))

//第二列存储<row>元素的opentime属性值

Element opentime = trElement.addElement("td")

opentime.addText(rowEle.attributeValue("opentime"))

//第三列存储<row>元素的opencode属性值

Element opencode = trElement.addElement("td")

opencode.addText(rowEle.attributeValue("opencode"))

//第四列存储<row>元素的expect属性值

Element expect = trElement.addElement("td")

expect.addText(rowEle.attributeValue("expect"))

}

System.out.println(doc.asXML())

} catch (Exception e) {

e.printStackTrace()

}

}

}

我将

<?xml version="1.0" encoding="UTF-8"?>

<xml>

<row ballsnum="3" opentime="2014-01-19 21:30:00" opencode="05,14,16,21,29,30|12" expect="14008"/>

<row ballsnum="3" opentime="2014-01-16 21:30:00" opencode="08,10,12,14,18,28|14" expect="14007"/>

</xml>

存储在D盘下的test.xml文件中

我读取D盘下的test.xml文件中的xml内容生成了一个表格

System.out.println(doc.asXML())语句将在控制台打印表格内容

打印结果如下:

<?xml version="1.0" encoding="UTF-8"?>

<table>

<tr>

<td>3</td>

<td>2014-01-19 21:30:00</td>

<td>05,14,16,21,29,30|12</td>

<td>14008</td>

</tr>

<tr>

<td>3</td>

<td>2014-01-16 21:30:00</td>

<td>08,10,12,14,18,28|14</td>

<td>14007</td>

</tr>

</table>