asp+xml问题,大家帮帮忙

zergtant 2003-07-17 01:31:25
<books>
<book>
<title>XML Applications</title>
<quantity>23</quantity>
<ISBN>1-861001-52-5</ISBN>
</book>
<book>
<title>IE5 XML Programmer's Reference</title>
<quantity>37</quantity>
<ISBN>1-861001-57-6</ISBN>
</book>
<book>
<title>Designing Distributed Applications</title>
<quantity>15</quantity>
<ISBN>1-861002-27-0</ISBN>
</book>
<book>
<title>XML Design and Implementation</title>
<quantity>12</quantity>
<ISBN>1-861002-28-9</ISBN>
</book>
</books>
有一个这样的xml数据文件,保存书的信息,我想用循环遍历各个书的情况,但是微软的XMLDOM好像没有统计书本个数的属性,请问怎怎样用asp遍历各个书的情况,请给出源代码,谢谢
...全文
80 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zergtant 2003-07-17
  • 打赏
  • 举报
回复
谢谢各位,送分
baby21st 2003-07-17
  • 打赏
  • 举报
回复
<%
set xmldom = server.createobject("Microsoft.XMLDOM")
xmldom.load(server.mappath("book.xml"))

set root = xmldom.documentElement
dim len
len = root.childNodes.length
for i = 0 to len-1
Title = root.childnodes.item(i).childnodes.item(0).text
quantity = root.childnodes.item(i).childnodes.item(2).text
.....

next


%>
月光易水 2003-07-17
  • 打赏
  • 举报
回复
可以取得书本节点个数
书本情况显示,还是使用xsl进行转换显示较好
try:
a.asp
<%
dim sHTMLStr
dim sXMLFile
dim sXSLFile
dim oXML, oXSL

sXMLFile = "a.xml"
sXSLFile = "a.xsl" ' 指定xsl文件

Set oXML = Server.CreateObject("Microsoft.XMLDOM")
Set oXSL = Server.CreateObject("Microsoft.XMLDOM")
oXML.async = false
oXSL.async = false
oXML.load( server.mappath(sXMLFile) )
oXSL.load( server.mappath(sXSLFile) )

sHTMLStr = ""
sHTMLStr = sHTMLStr & "asp取值01-书目:" & oXML.documentElement.childnodes.length & "<br/><br/>"
sHTMLStr = sHTMLStr & "asp取值02-书目:" & oXML.selectNodes("//book").length & "<br/><br/>"
sHTMLStr = sHTMLStr & "xsl转化显示"
sHTMLStr = sHTMLStr & oXML.transformNode(oXSL)



Set oXML = nothing
Set oXSL = nothing

Response.Write sHTMLStr

%>
a.xsl
<?xml version="1.0" encoding="gb2312"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<table border='1'>
<xsl:call-template name="TH" />
<xsl:apply-templates select="//book" />
</table>
<xsl:call-template name="SUM" />
</xsl:template>

<xsl:template name="TH">
<tr>
<xsl:for-each select="//book[position() = 1]/*">
<td>
<xsl:value-of select="name()" />
</td>
</xsl:for-each>
</tr>
</xsl:template>

<xsl:template name="SUM">
总数:<xsl:value-of select="count(//book)" />
总价:<xsl:value-of select="sum(//book/quantity)" />
</xsl:template>

<xsl:template match="book">
<tr>
<xsl:for-each select="*">
<td>
<xsl:value-of select="." />
</td>
</xsl:for-each>
</tr>
</xsl:template>

</xsl:stylesheet>


:_)
ssm1226 2003-07-17
  • 打赏
  • 举报
回复

set nodes=xmldoc.selectNodes("//book")
方法1.
for each node in nodes
.........
next


方法2.

intNodesLen=nodes.length

for i=0 to intNodesLen-1
.........
next
iyiduhsoad 2003-07-17
  • 打赏
  • 举报
回复
asp不是很清楚,我想应该也有类似节点集之类的对象吧,象
在asp.net中
XmlNodeList ndList=doc.SelectNodes("//book");
应该有类似的方法吧。

8,906

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧