使用ASP订制自己的XML文件读写方法(2)

时间:2008-10-24 09:35:00 



先确定该标记是这一级节点中的第几个,此例为6;好,确定后马上行动:
text = root.childNodes.item(5).text

“root.childNodes.item(5).text”这一句代码应该很好理解,用伪代码翻译过来就是“目录.子目录集合.集合中的第5个标记.标记的文本内容”,因为XML的元素索引是从0开始的,所以我们获取某个位置的标记时,一点要记着把位置数减1再执行操作,否则就会越界。比如我们要获取下一级节点的第一个标记的文本,我们就应该用“root.childNodes.item(0)”,而不是“root.childNodes.item(1)”

为了方便,我们将“获取下一级标记的内容”这一操作写成函数,以便重用:
Function getNodeText(ByVal nNode)
getNodeText = root.childNodes.item(nNode).text
End Function

有了这个函数后,我们再要得到“无修改内容”时就只需用如下代码:
text = getNodeText(5)

既避免了出错,也减轻了输入工作。与之相反,修改下一级标记的内容的代码是:
root.childNodes.item(nNode).text = 要修改成的字串,我们同样写成一个函数——
Function setNodeText(ByVal nNode, ByVal strNewNodeText)
root.childNodes.item(nNode).text = strNewNodeText
End Function

现在,我们要将“无修改内容”改成“第一条记录已经更改”,就可以这样:
setNodeText 5,"第一条记录已经更改"

(修改后请用rootXML.Save(文件名)方法保存文件,以使修改生效。)
OK!我们已经可以方便地对下一级标记的进行读取和修改了,好,下一个目标,标记的属性。

我们先回顾一下我们的第二级节点中的第一个标记的内容:
<歌曲 歌名="Yesterday" 时间="1:53" 分级="5"/>
这是一种特殊表达方式,只有首标签<歌曲>,而没有尾标签</歌曲>,更没有夹在两个标签之间的文本内容,而直接以一个&ldquo;/&rdquo;结束。呵呵,我是个懒人,所以我比较偏向于这种省略尾标签的写法。但我们用这种省略写法的时候,我们就没法在首尾标签中添加数据了,更没法使用我们上面定义的两个函数。这时候,标记的属性给我们提供了存贮数据的唯一容器,上面这个标记中就存贮着3组属性,下面让我们来试着访问它:
text = root.childNodes.item(0).attributes.item(0).value

这段代码让text变量被赋予了"Yesterday"这个字串,不信你打印一下。用伪代码解释之:
&ldquo;目录.下一级目录.第0个标记.标记的属性集合.集合中的第0个属性.属性对应的值&rdquo;
废话少说,写成函数
Function getAttValue(ByVal nNode, ByVal nAtt)
getAttValue=root.childNodes.item(nNode).attributes.item(nAtt).value
End Function

以后就可以很方便地用text = getAttValue(0,0)得到下一级节点中第0个标记的第0个属性值了,
属性也是从0开始索引,切记。

至于修改属性,很简单,直接赋值既可,写成函数表示:
Function setAttValue(ByVal nNode, ByVal nAtt, ByVal strNewAttValue)
root.childNodes.item(nNode).attributes.item(nAtt).value=strNewAttValue
End Function

好,一旦我们发现&ldquo;All You Need Is Love&rdquo;这首歌太好听了,想把它的等级升成5,就可以这样做
setAttValue 2,2,"5"

最后,记得使修改生效,也就是在操作后使用rootXML.Save(文件名)这一方法。

当能够读写一个XML文件的文本内容和属性值后,我想您也应该基本上能够用ASP熟练地操作XML文档元素了,赶快将这一技术用在你的ASP中吧!好,今天就写到这里,下次再写时我再附上删除属性、创建标记、添加标记、删除标记、复制标记、替换标记、按条件查询 等一些没讲完的操作。

我是学JAVA和C++的,如果您不嫌我的VBScript很菜的话,可以将我定义的那些函数直接做成一个文件,要用XML时,就用include语句将其包含之。 
 

标签:
0
投稿

猜你喜欢

  • webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)

    2024-04-27 16:10:21
  • 教你在SQL Server 2000数据库中使用分区

    2008-11-25 11:55:00
  • 用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码

    2021-07-29 00:54:25
  • php mysql PDO 查询操作的实例详解

    2023-11-14 18:32:28
  • javascript自定义函数参数传递为字符串格式

    2024-04-22 13:08:18
  • 当设计师遇上前端开发

    2009-05-04 14:05:00
  • 使用GitHub和Python实现持续部署的方法

    2022-07-16 22:54:35
  • Git配置.gitignore文件忽略被指定的文件上传

    2022-09-23 03:00:08
  • javascript面向对象技术基础(三)

    2010-02-07 13:11:00
  • 常用java正则表达式的工具类

    2023-06-14 09:16:46
  • Go并发编程之sync.Once使用实例详解

    2024-04-26 17:21:23
  • Python + selenium + crontab实现每日定时自动打卡功能

    2021-06-10 19:45:42
  • 如何使用Pytorch搭建模型

    2022-07-18 10:34:27
  • ORACLE常见错误代码的分析与解决三

    2024-01-16 13:03:41
  • Django drf请求模块源码解析

    2023-06-07 10:03:07
  • python 利用PyAutoGUI快速构建自动化操作脚本

    2021-08-04 15:42:14
  • 通过pycharm使用git的步骤(图文详解)

    2023-07-24 14:43:21
  • Python抓取框架Scrapy爬虫入门:页面提取

    2022-04-16 18:57:47
  • Java API学习教程之正则表达式详解

    2023-10-23 05:28:21
  • asp让网站自动识别手机访问跳转至手机网站

    2014-12-06 09:36:02
  • asp之家 网络编程 m.aspxhome.com