从TestComplete中的XML文件获取节点的值

Suv*_*ker 1 xml automated-tests testcomplete

我的XML文件的结构是这样的。

<?xml version="1.0" encoding="utf-8" ?>
<atom:entry xmlns:atom="http://www.w3.org/2005/Atom"xmlns:core="http://x.y.com/xy/xyz">
<atom:title>TestTitle</atom:title>
<atom:link rel="a" href="$a_u"/>
<atom:link rel="ot" href="$ou"/>
<atom:link rel="db" type="app/c.d.p+xml" href="e.xml">
  <atom:inline>
   <payload xmlns="http://www.yyy.com/xxx" model="https://xxxx.yyy.com/api/te/db/et/r1">
     <field name="asset.title">
       <value>DP</value>
     </field>
     <field>
      <value>xxx</value>
     </field>
     |
     |
     |
  </atom:inline>
 </atom:link>
</atom:entry>
Run Code Online (Sandbox Code Playgroud)

我试图获取DP提起诉讼的人的价值name="asset.title"

跟随这位医生的尝试,但没有运气。

http://support.smartbear.com/viewarticle/57106/

http://support.smartbear.com/viewarticle/58850/

我如何获得这个价值。在此先感谢您的指导或帮助。

Dmi*_*aev 5

在处理定义了名称空间的XML时,需要指定选择名称空间。以下脚本适合您。

function test()
{
  var fileName = "c:\\test.xml";
  var doc = Sys.OleObject("Msxml2.DOMDocument.6.0");
  doc.setProperty("SelectionNamespaces", "xmlns:atom='http://www.w3.org/2005/Atom' xmlns:ns='http://www.yyy.com/xxx'");
  doc.load(fileName);

  var value = doc.selectSingleNode("/atom:entry/atom:inline/ns:payload/ns:field[@name='asset.title']/ns:value").text;
  Log.Message(value);
}
Run Code Online (Sandbox Code Playgroud)