其中DOM的解析方式是一次性把XML读入到内存中,然后按照XML的结构在内存中生成一颗DOM树,这样你可以从XML的根节点开始访问XML的每一个节点。但是种方式因为要把XML一次性全部读入内存,所以内存的消耗是很大的。如果XML很大的话,不建议使用这种方式。
SAX比较灵活,它是一个标签,一个标签的解析,每解析一个标签的时候就会调用相应的一个函数。已经解析过的标签,就被程序丢掉了(除非用你自己的方式把它记下来)。给你举个例子,比如有这样一个xml文件:
<年级
名称=“一年级”>
<班级
名称=“一班”>
<班主任
名称=“XXX”/>
班级
<班级
名称=“二班”>
<班主任
姓名=“YYY”>
班级
年级
对于这个XML,SAX的解析方式是,首先遇到"年级"标签,然后调用函数startElement(),在这个方法里,你可以读取“年级”标签的名称是“一年级”,然后往下执行,读到了班级,这个时候程序会再次自动的触发startElement()方法,然后得到班级的名称,这个时候已经读取的“年级”的信息就不存在了。后面的标签以此类推。
当读到
班级
标签的时候,程序会自动出发endElement()方法。当然读到
年级
的时候也会触发这个方法。
总的来说,程序对XML每做一次进一步的 *** 作,就会触发一个相应的函数,触发的这个函数叫做回调函数(其实不知道它是回调函数也没关系)。个人感觉整个解析的过程就类似于对栈的 *** 作。
解释的很粗浅,因为如果真正要把这个问题说明白很麻烦,不过希望这个解释能给你帮助
:)
请参考
可以通过xslt来实现 。XSLT(Extensible StyleSheet Language Transmations),是XSL(可扩展样式语言)的一种,是一种基于模版的样式转换语言,说的直接一点就是可以把XML文本转成其他格式的文本,那么一起来看转换的代码:
[html] view plain copy print?
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<html>
<head>
<title>Review of My Dogs</title>
</head>
<body>
<h4>list of My Dogs</h4>
<table width="100%" border="1">
<thead>
<tr>
<th>Name</th>
<th>Breed</th>
<th>Age</th>
<th>Full Blood</th>
<th>Color</th>
</tr>
</thead>
<tbody>
<xsl:apply-templates/>
</tbody>
</table>
</body>
</html>
</xsl:template>
<xsl:template match="dog">
<tr>
<td>
<strong><xsl:value-of select="name" /></strong>
</td>
<td><xsl:value-of select="@breed" /></td>
<td><xsl:apply-templates select="age" /></td>
<td><xsl:value-of select="fullBlood" /></td>
<td><xsl:value-of select="color" /></td>
</tr>
</xsl:template>
<xsl:template match="age">
<xsl:value-of select="years" />years
<xsl:value-of select="months" />months
</xsl:template>
</xsl:stylesheet>
将上面的代码写在记事本里,保存成xsl格式,然后再XML文档中引入:
[html] view plain copy print?
<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="mydogs.xsl"?>
<myDogs>
<dog breed="labrador">
<name>morgan</name>
<age>
<years>1</years>
<months>10</months>
</age>
<fullBlood>yes</fullBlood>
<color>Chocolate</color>
</dog>
</myDogs>
其实html中table本身就是xml格式的,只是现在需要把表格的标签生成到一个纯xml文件。具体实现方法如下:
1、后台办法:
string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" + tablename.InnerHtml
2、前台取法:
前台直接使用Jquery更方便
var xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>" +$("tablename").html()
表格代码如下
[code=html] <table id="tablename" runat="server" >
<tr>
<td></td>
</tr>
</table>[/code]
后台需要加上这两个 id="tablename" runat="server"
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)