当前位置: 首页 > news >正文

XML各层对象的方法

第一层:使用XMLUtil对象, 创建一个XMLData类型的对象

方法1XMLUtil.CreateXML ( [RootName] )

创建的XMLData对象是空的,要结合XMLData.Load (XMLString) XMLData.LoadFile (FilePath)来初始化

方法2XMLUtil.CreateXMLFromFile( XMLFilePath)

创建XMLData对象的同时,加载一个已存在的XML文件来初始化

第二层:对XMLData类型的对象的操作:加载文件,保存文件

常用方法和属性

lXMLData.Clone  方法

返回值:XMLData 对象


 

<Papa QTP="Great">

hello!imrootvalue
 <Bambino>Valuable</Bambino>
<Bambino>Valuable</Bambino>

</Papa>

Set doc = XMLUtil.CreateXML()

doc.LoadFile "c:\cora.xml"

Set doc1 = xmlutil.CreateXML()

doc1.Load doc.ToString

Set doc2 = doc.Clone()

res = doc1.Compare(doc2,resultDoc)

if res = 1 then

msgbox "文档匹配 -)"

else

msgbox "文档不匹配 -("

end if

Set root =doc .GetRootElement

While Not root Is nothing

Msg Root. Value()

Else

Root.set Value("Abuela")

Msg Root. Value()

Root..savefile  "c:\cora.xml"

lXMLData.Load (XMLString) 方法

见上,使用指定的 XML 字符串初始化 XML 对象。通常是个路径。

lXMLData.LoadFile (FilePath) 方法

见上,通常与doc.tostring连用

lXMLData.GetRootElement 方法

 返回XMLElement 对象,由此进入第3层,对XMLElement的操作

lXMLData.SaveFile FilePath

lXMLData.ToString

可用于初始化另一个新建的XMLData对象,结合XMLData.Load (XMLString)方法

lXMLData.ChildElementsByPath 方法

返回驻留在指定路径中的所有子元素。

Set doc = XMLUtil.CreateXML()

doc.Load"<Bookstore><Book><ISBN>1234</ISBN></Book><Book><ISBN>4321</ISBN></Book><Book><ISBN>6584</ISBN></Book></Bookstore>"

Set children = doc.ChildElementsByPath("/Bookstore/Book/ISBN")

Set child = doc.GetRootElement().ChildElements().Item(1)

Set relatives = child.ChildElementsByPath("../Book/ISBN")

if children.Count() = relatives.Count() then

msgbox "XML 结构不存在问题,子节点的数量是"&children.Count()

end if

注意:判断某个对象是否存在,可以使用:Not object  Is nothing

第三层:对XMLElement 对象, XMLElementsColl 对象, XMLAttribute 对象, XMLAttributesColl  对象,的操作

(参考QTP帮助文档-Quick Test Object Model Reference-Supplement Objects-XML …Object

XMLElement 对象

l         常用方法:

l         AddChildElement 方法

Set doc = XMLUtil.CreateXML()

doc.CreateDocument "Papa"

Set root = doc.GetRootElement()

root.AddChildElementByName "Bambino","Valuable"

Set children = root.ChildElements()

Set child = children.Item(1)

root.AddChildElement(child)

doc.SaveFile "C:\cora.xml"

if children.Count() <> 2 then

msgbox "添加子元素失败"

end if

root.RemoveChildElement child

if children.Count() <> 1 then

msgbox "删除子元素失败"

end if

l         AddChildElementByName 方法

同上

l         AddAttribute 方法

Set doc = XMLUtil.CreateXML()

doc.LoadFile "c:\cora.xml"

Set root = doc.GetRootElement()

Set attrs = root.Attributes()

msg = "最开始我有 " & attrs.Count() & " 个属性。 "

root.AddAttribute "QTP","Great"

Set attr = attrs.ItemByName("QTP")

if attr is nothing then

msgbox "添加属性失败!!!"

end if

msg = msg + "现在我有 " & attrs.Count() & " 个属性。"

root.RemoveAttribute "QTP"

msg = msg + "我重新有了 " & attrs.Count() & " 个属性。"

msgbox msg

l         Attributes 方法

同上,返回属性集合中元素的所有属性。即返回一个属性的集合

l         RootElement方法

返回元素文档的根元素

Set doc = XMLUtil.CreateXML()

doc.CreateDocument "Mama"

Set root = doc.GetRootElement()

root.SetValue("Abuela")

root.AddChildElementByName "Chica",""

Set child = root.ChildElements().Item(1)

child.AddChildElementByName "Chicita",""

Set grandChild = child.ChildElements().Item(1)

if root is grandChild.RootElement() then

msgbox "我找到了我的祖母级元素;她的值是 " + root.Value()

end if

doc.SaveFile "c:\cora.xml"

l         CreateDocument 方法

同上

l         SetValue 方法

如上

l         Value 属性

返回元素的值(字符数据)。

Set doc = XMLUtil.CreateXML()

doc.LoadFile "c:\cora.xml"

Set root = doc.GetRootElement

msg = "My name is "

nameStr = root.ElementName()

valueStr = root.Value()

msgbox msg+nameStr + " and my value is " + valueStr

l         ElementName 方法

同上,返回元素对象的标记名。

l         NextSibling 方法

返回 XML 文档中的下一个兄弟元素。

Set doc = XMLUtil.CreateXML()

doc.LoadFile "c:\cora.xml"

Set root = doc.GetRootElement

Set children = root.ChildElements()

if not children.Count() = 0 then

Set firstChild = children.Item(1)

mag = "第一个子元素的名称是 " + firstChild.ElementName() + "。父元素的名称是 " + firstChild.Parent().ElementName() + " "

Set brother = firstChild.NextSibling()

If brother Is nothing Then

brotherStr = "我是兄弟中唯一的一员 ? 或者我没有兄弟"

Else

brotherStr = "他的第一个兄弟的名称是 " + brother.ElementName() + ""

End If

End If

msgbox brotherStr

l         Parent 方法

同上

l         ChildElements 方法

         同上,返回某个元素下的所有子元素集合,即XMLElementsColl Object

l         ChildElementsByPath 方法

例子见:XMLDaTa.ChildElementsByPath

XMLElementsColl 对象

表示 XML 元素集合的对象。可以使用下列方法之一访问该对象:

l         XMLData.ChildElementsByPath

XMLData对象的属性和方法

l         XMLElement.ChildElements

XMLElement对象的属性和方法

l         XMLElement.ChildElementsByPath

XMLData对象的属性和方法的例子

l         XMLElementsColl.AllItemsByName

返回具有指定名称的元素的集合。

<Papa QTP="Great">

  hello!imrootvalue

  <Bambino>Valuable</Bambino>

  <Bambino>Valuable</Bambino>

  </Papa>

Set doc = XMLUtil.CreateXML()

doc.LoadFile "c:\cora.xml"

Set root = doc.GetRootElement()

Set children = root.ChildElements()

if children.Count() <> 0 then

Set firstChild = children.Item(1)

firstChildName = firstChild.ElementName()

Set sameNameChildren = children.AllItemsByName(firstChildName)

msg = "我的第一个子元素的名称为 " + firstChildName + ",我有其中的 " + FormatNumber(sameNameChildren.Count(),0) + " 个。"

End If

msgbox msg

Count 属性

返回集合中的元素数。

Set children = root.ChildElements()

if children.Count() <> 0 then

Set firstChild = children.Item(1)

Item 属性

返回集合中的指定元素。

语法

XMLElementsColl.Item ( ID [, Index] )

ID:可以是元素名称,也可以是索引,即,第几次出现

Index ,如果id为元素名的话,则可以指定第几次出现的位置。

Itembyname属性

返回具有指定标记名的元素。如果有多个项具有相同的标记名,则可以指定要检索该标记名的哪一次出现。如果未指定,则检索第一次出现的标记名。

例子:

该示例显示了带可选索引参数和不带可选索引参数的 ItemByName 的用法。

Set doc = XMLUtil.CreateXML()

doc.LoadFile "c:\cora.xml"

Set root = doc.GetRootElement()

Set children = root.ChildElements()

Set child = children.ItemByName("Bambino ")

numOfChildren = 0

While Not child Is nothing

numOfChildren = numOfChildren+1

Set child = children.ItemByName("Cartman",numOfChildren+1)

Wend

msgbox "名为 Cartman 的子元素的数目为 " & numOfChildren

 

XMLAttribute对象

表示 XML 元素属性的对象。可以使用下列方法之一访问该对象:

l         XMLElement.AddAttribute

l         XMLAttributesColl.Item

l         XMLAttributesColl.ItemByName

Name 属性

返回属性名。

示例

以下示例使用 Value 方法在根元素中查找属性的值,以便与其属性名一起显示。

Set doc = XMLUtil.CreateXML()

doc.LoadFile "c:\cora.xml"

Set root = doc.GetRootElement()

Set attribs = root.Attributes()

numOfAttr = attribs.Count()

i = 1

While i <= numOfAttr

Set attr = attribs.Item(i)

nameStr = attr.Name()

valStr = attr.Value()

attrStr = attrStr + nameStr+"="+chr(34)+valStr+chr(34) + " "

i = i+1

Wend

msgbox "属性:" + attrStr

Value 属性

返回属性的值,同上

XMLAttributesColl  对象

表示元素属性集合的对象。可以使用以下方法访问该对象:

可以通过xmlelement. Attributes 方法方法来访问:

l         xmlelement. Attributes

具体如xmlelement章节

Count 属性

例子同XMLAttributename属性

Item 属性

同上

ItemByName 属性

返回具有指定名称的属性。

Set doc = XMLUtil.CreateXML()

doc.LoadFile "c:\cora.xml"

Set root = doc.GetRootElement()

Set attrs = root.Attributes()

msg = "最开始我有 " & attrs.Count() & " 个属性。 "

root.AddAttribute "QTP","Great"

Set attr = attrs.ItemByName("QTP")

doc.savefile"c:\cora.xml"

if attr is nothing then

msgbox "添加属性失败!!!"

end if

msg = msg + "现在我有 " & attrs.Count() & " 个属性。 "

root.RemoveAttribute "QTP"

msg = msg + "我重新有了 " & attrs.Count() & " 个属性。"

msgbox msg

心得 

(1)对象要用SET 来赋值,但数字不需要,加了SET反而会出错

如:

set  xmlValues= child. ChildElementsByPath("../variable").item(1).value

会报“object required”错误, 因为用了SET, xmlValues是个对象,而后面赋的值却是个数字

相关文章:

  • weblogic 10.3 for redhat 5.5 install
  • SELinux进阶篇 应用目标策略管理非限制进程和用户
  • EM智能会议室预订系统
  • ASP.NET经典源代码下载地址及数据库配置方法
  • Hyper-V备份:选择Hypervisor备份还是虚拟机备份
  • 通过监控诊断和调试应用程序对共享目录访问可能的权限问题
  • 我的第五代选择器Icarus
  • 古老的话题:成本控制
  • 使用WebLogic进行应用软件开发
  • 系统集成资质培训 - 案例分析知识点复习
  • 遇到一个很诡异的问题,求解答
  • 高度图构造地形
  • Oracle SQL的优化规则
  • 【转】FLASH Player 11.2 BETA 鼠标新特性初探及api配置
  • Poj1180 Batch Scheduling --- DP的斜率优化
  • 【笔记】你不知道的JS读书笔记——Promise
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • Fundebug计费标准解释:事件数是如何定义的?
  • gops —— Go 程序诊断分析工具
  • Intervention/image 图片处理扩展包的安装和使用
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • Laravel 中的一个后期静态绑定
  • text-decoration与color属性
  • 大快搜索数据爬虫技术实例安装教学篇
  • 短视频宝贝=慢?阿里巴巴工程师这样秒开短视频
  • 浮现式设计
  • 基于Dubbo+ZooKeeper的分布式服务的实现
  • 微信小程序--------语音识别(前端自己也能玩)
  • 新书推荐|Windows黑客编程技术详解
  • 学习使用ExpressJS 4.0中的新Router
  • 译米田引理
  • 阿里云移动端播放器高级功能介绍
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​比特币大跌的 2 个原因
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #HarmonyOS:软件安装window和mac预览Hello World
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (1)STL算法之遍历容器
  • (1综述)从零开始的嵌入式图像图像处理(PI+QT+OpenCV)实战演练
  • (C++)八皇后问题
  • (多级缓存)多级缓存
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (十一)图像的罗伯特梯度锐化
  • (幽默漫画)有个程序员老公,是怎样的体验?
  • (转)利用ant在Mac 下自动化打包签名Android程序
  • .net FrameWork简介,数组,枚举
  • .NET处理HTTP请求
  • .Net面试题4
  • .NET牛人应该知道些什么(2):中级.NET开发人员
  • .NET设计模式(11):组合模式(Composite Pattern)
  • .NET业务框架的构建
  • @Autowired自动装配
  • @Builder用法
  • []T 还是 []*T, 这是一个问题
  • [20190113]四校联考