51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2013|回复: 2
打印 上一主题 下一主题

[原创] XMLUtil对象里的ChildElementsByPath很让我费解

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2011-2-15 21:43:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 dabeixiong 于 2011-2-15 21:44 编辑

偶然写代码发现点问题,于是写了段测试程序,终于发现问题所在,上代码先(QTP10中运行的,应该9,9.5,11都一样把):

'创建XMLUtil对象实例doc
Set doc = XMLUtil.CreateXML

'加载段xml
doc.Load "<Bookstore><Book><ISBN>1234</ISBN></Book><Book><ISBN>4321</ISBN></Book><Book><ISBN>6584</ISBN></Book></Bookstore>"

'root为根节点对象,即Bookstore
Set root = doc.GetRootElement

'用ChildElements方法获取子元素
Set children = root.ChildElements

'用ChildElementsByPath方法获取子元素,即3个Book元素
Set Xpathchildren = root.ChildElementsByPath("/Bookstore/*")


'这里看还没啥问题,貌似用ChildElements或ChildElementsByPath可以实现同样效果
For i = 1 to 3
        msgbox "children: " & children.Item(i).ElementName
        msgbox "Xpathchildren: " & Xpathchildren.Item(i).ElementName
Next

'用Xpathchildren的item找兄弟,3个Book元素互为兄弟应该
Set brother = Xpathchildren.Item(1).NextSibling

'这就诡异了,怎么brother为nothing呢-.-!难道用ChildElementsByPath获得的子元素用NextSibling方法就有问题?
If brother is nothing Then
        msgbox "搞什么飞机啊!!!!"
End If

'用children的item找兄弟,就没啥问题
Set brother = children.Item(1).NextSibling

'children对象中的item获取到的元素兄弟就不是nothing,崩溃!
msgbox brother.ElementName
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2011-2-15 21:47:31 | 只看该作者
用ChildElementsByPath方法获取子元素时,用过"//Book","/Bookstore/Book"等,结果是一样的...有兴趣的可以试试,真是诡异啊...哪位玩QTP的遇到这灵异事件了?
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2011-2-15 22:59:00 | 只看该作者
各位看官路过给个留言行不~解决不解决无所谓的事...搞得我很寂寞啊-.-!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-20 20:30 , Processed in 0.068248 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表