使用Visual Basic操纵XML文档[2]
[入库:2005年8月18日] [更新:2007年3月24日]
| &node.selectsinglenode (“到站时间").text |
| 这段代码使用selectnodes方法选择根节点下所有的“航班”节点,然后使用selectsinglenode方法选择“航班”节点下的“离站时间”和“到站时间”,读取并打印它们的text属性值。 |
| 可以使用childnodes集合以递归的方式层次化显示xml 文档的内容。 |
| 首先,在form1中声明一个子过程prettyprint。 |
| public sub prettyprint(node as ixmldomnode, |
| optional tablevel as integer=0) |
| dim childnode as ixmldomnode |
| if node.nodename<>vbnullstrin |
| and node.nodename < >“#text" then |
| debug.printstring(tablevel,chr$(9)) |
| if node.haschildnodes then |
| for each childnode in node.childnodes |
| call prettyprint(childnode,tablevel+1) |
| debug.printstring(tablevel+1,chr$(9))&node.text |
| if node.nodename< >vbnullstring and node.nodename |
| (tablevel,chr$(9))&“< /"&node.nodename&“ >" |
| 然后在form1中加入第2个commandbutton控件,将其 name和caption属性分别设为cmdprint和print。将下列代码加入事件cmdprint_click中: |
| private sub cmdprint_click() |
| if not xml is nothing then |
| 运行程序。首先点击load xml按钮加载flight.xml,然后点击print按钮。在immediate窗口中可以看到层次分明、易于阅读的输出结果。子过程 prettyprint在documentelement的子节点中循环,打印每个节点的nodename属性值,而每个子节点又递归调用prettyprint。xml文档内各节点内在的相似性是xml最具吸引力的特性,每个子节点都与其父节点有着相同的属性和方法(尽管各自的内容通常不同),这就使得为同一文档中的所有或部分节点编写某种规则变得相对简单。 |
| 如同修改数据库中的记录一样,也可以修改xml文档中节点的内容。下列代码修改了flight.xml文档中“发布日期”节点的text属性值: |
| set node = root.selectsinglenode(“发布日期") |
| if not node is nothing then |
| node.text = “2000年10月20日" |
| 修改了文档内容之后,可以使用save方法保存修改后的文档。save方法可以将xml文档保存为文件、数据流或asp的response对象。save方法的用法如下: |
| xml.save app.path & “flightupdated.xml" |
| 将上面两段代码添加在cmdload_click事件中,运行程序。点击load xml按钮,在程序工作目录中会增加一个新文件flightupdated.xml。在ie5 中打开该文件,可以看到“发布日期”标记的文本已经被改为“2000年10月20日”。 |
| 在实际应用中,xml可以被用作数据传输格式、可搜索数据库、可定制的数据存储方式和显示信息的数据源(需要xsl或如vb这样的编程语言的帮助)。因为msxml是一个com对象,所以可以在asp页中使用它的实例,然后方便地使用vbscript或jscript编程来操纵它。 |
本文关键:vb xml ibeyond.org
本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)