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是个对象,而后面赋的值却是个数字

posted @ 2011-10-21 17:25  Sirrah  阅读(647)  评论(0编辑  收藏  举报