l 方法1:XMLUtil.CreateXML ( [RootName] )
创建的XMLData对象是空的,要结合XMLData.Load (XMLString) 或XMLData.LoadFile (FilePath)来初始化
l 方法2:XMLUtil.CreateXMLFromFile( XMLFilePath)
创建XMLData对象的同时,加载一个已存在的XML文件来初始化
第二层:对XMLData类型的对象的操作:加载文件,保存文件
常用方法和属性
lXMLData.Clone 方法
返回值:XMLData 对象
<Papa QTP="Great">
hello!imrootvalue<Bambino>Valuable</Bambino>
<Bambino>Valuable</Bambino>
</Papa>
Set doc = XMLUtil.CreateXML()
Set doc1 = xmlutil.CreateXML()
res = doc1.Compare(doc2,resultDoc)
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 元素集合的对象。可以使用下列方法之一访问该对象:
见XMLData对象的属性和方法
见XMLElement对象的属性和方法
l XMLElement.ChildElementsByPath
l XMLElementsColl.AllItemsByName
返回具有指定名称的元素的集合。
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.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 属性
例子同XMLAttribute的name属性
同上
返回具有指定名称的属性。
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是个对象,而后面赋的值却是个数字