getNodeValue() 返回 null,尽管响应 xml 持有者不返回 null

2024-04-06

我正在使用 SOAP UI-GetCityWeatherByZip 的演示 Web 服务。该脚本从 csv 文件中读取不同的邮政编码,将它们传递到请求 xml 中,获取响应并将结果存储在 csv 文件中。 ulresp 变量用于存储响应,并且不返回 null,但 getnodevalue 返回 null。我不确定问题是什么。邮政编码被正确读取。服务也运行得很好。代码如下。

def groovyUtils = new com.eviware.soapui.support.GroovyUtils( context )
def f = new File(groovyUtils.projectPath + "\\Trial\\TestData1.csv");
int row;
log.info(f.absolutePath);


def o = new File("C:\\Users\\Ananth\\Desktop\\SOAP UI\\Trial\\Output.csv");
log.info(o.absolutePath);
o << "Zipcode,Responsetext \n";

context.fileReader = new BufferedReader(new FileReader(f));
line=context.fileReader.readLine();
row=1;
while(line!=null)
{
data=line.split(",")
zipcode=data[0].replace("\"", "");
log.info("row:${row}:zipcode:${zipcode}");

def req=groovyUtils.getXmlHolder("GetCityWeatherByZIP#Request");
req["//weat:ZIP"] = "$zipcode";
req.updateProperty();
log.info("Node Zip:${req.getNodeValue('//weat:ZIP')}");

def ulresult = testRunner.runTestStepByName("GetCityWeatherByZIP");
log.info("ulresult: ${ulresult}");
   if( ulresult != null && ulresult.getStatus().toString() == "OK" )
   {
       log.info("Run successful");

       ulresp=groovyUtils.getXmlHolder("GetCityWeatherByZIP#Response");

       if( ulresp != null )
       {    
       log.info("Response:${ulresp.getNodeValue('//ResponseText')}");
       }
       else
       {
         log.info("Response returning null");
       }    
   }
          line=context.fileReader.readLine();
        row=row+1;
} 

输入XML:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:weat="http://ws.cdyne.com/WeatherWS/">
   <soap:Header/>
   <soap:Body>
      <weat:GetCityWeatherByZIP>
         <!--Optional:-->
         <weat:ZIP>07009</weat:ZIP>
      </weat:GetCityWeatherByZIP>
   </soap:Body>
</soap:Envelope>

输出XML:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
   <soap:Body>
      <GetCityWeatherByZIPResponse xmlns="http://ws.cdyne.com/WeatherWS/">
         <GetCityWeatherByZIPResult>
            <Success>true</Success>
            <ResponseText>City Found</ResponseText>
            <State>NJ</State>
            <City>Cedar Grove</City>
            <WeatherStationCity>Caldwell</WeatherStationCity>
            <WeatherID>14</WeatherID>
            <Description>Cloudy</Description>
            <Temperature>60</Temperature>
            <RelativeHumidity>72</RelativeHumidity>
            <Wind>NE7</Wind>
            <Pressure>30.12S</Pressure>
            <Visibility/>
            <WindChill/>
            <Remarks/>
         </GetCityWeatherByZIPResult>
      </GetCityWeatherByZIPResponse>
   </soap:Body>
</soap:Envelope>

Log info

Wed Oct 30 07:30:16 IST 2013:INFO:C:\Users\Ananth\Desktop\SOAP UI\Trial\TestData1.csv
Wed Oct 30 07:30:16 IST 2013:INFO:FIle created
Wed Oct 30 07:30:16 IST 2013:INFO:C:\Users\Ananth\Desktop\SOAP UI\Trial\Output.csv
Wed Oct 30 07:30:16 IST 2013:INFO:row:1:zipcode:07008
Wed Oct 30 07:30:18 IST 2013:INFO:Node Zip:07008
Wed Oct 30 07:30:21 IST 2013:INFO:ulresult: com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStepResult@15929b1
Wed Oct 30 07:30:21 IST 2013:INFO:Run successful
Wed Oct 30 07:30:21 IST 2013:INFO:Response:null
Wed Oct 30 07:30:21 IST 2013:INFO:row:2:zipcode:07009
Wed Oct 30 07:30:21 IST 2013:INFO:Node Zip:07009
Wed Oct 30 07:30:22 IST 2013:INFO:ulresult: com.eviware.soapui.impl.wsdl.teststeps.WsdlTestRequestStepResult@10b9a14
Wed Oct 30 07:30:22 IST 2013:INFO:Run successful
Wed Oct 30 07:30:22 IST 2013:INFO:Response:null

最有可能的是因为响应有一个命名空间,所以您必须在访问响应中的项目之前定义命名空间。用于:

ulresp.namespaces["ns"] = "http://ws.cdyne.com/WeatherWS/"

and then

ulresp.getNodeValue('//ns:ResponseText')

应该看起来像

.....
ulresp=groovyUtils.getXmlHolder("GetCityWeatherByZIP#Response")
ulresp.namespaces["ns"] = "http://ws.cdyne.com/WeatherWS/"

if( ulresp != null ) {    
    log.info("Response:${ulresp.getNodeValue('//ns:ResponseText')}")
} else {
    log.info("Response returning null")
}  
......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

getNodeValue() 返回 null,尽管响应 xml 持有者不返回 null 的相关文章

  • Eclipse 在处理 xml(传入或传出)时挂起。此时CPU+磁盘尖峰

    我每天必须处理许多 XML 这极大地打断了我的工作流程 我尝试降级到 Indigo 但所有附加组件都被删除 打开xml时出现问题 切换到 xml 切换出一个 xml 甚至切换到另一个 xml 到底发生了什么事情让 XML 如此烦人 我可以禁
  • VBA XML V6.0 如何让它等待页面加载?

    我一直在努力寻找答案 但似乎找不到任何有用的东西 基本上 我是从一个网站上拉取的 当您在该页面上时 该网站会加载更多项目 我希望我的代码在加载完成后提取最终数据 但不知道如何让 XML httprequest 等待 Edited Sub p
  • 与赋值“=”和括号 { } 的使用混淆

    我是 gradle 的新手 对于 groovy 也是如此 我几乎不了解某些概念 并且真的不知道它是否与 groovy 或 gradle 相关 以及需要 google 哪些关键字来获取帮助 我经常被这样的事情绊倒 android some c
  • 在python中读取PASCAL VOC注释

    我在 xml 文件中有注释 例如这个 它遵循 PASCAL VOC 约定
  • 解组转义 XML

    在 Go 中 我将如何解码此 XML 响应 我尝试过建立一个自定义UnMarshal方法在我的Answerstruct 但我运气不太好
  • python dicttoxml 多次使用相同的键

    我正在尝试做如下所示的 xml
  • 在线性布局内的 ScrollView 内并排对齐 TextView

    我有一个带有滚动视图的线性布局 我想保留它的当前格式 但只需将 textView2a 和 textView3a 并排放置 而不会破坏我当前的布局格式 我已经包含了我最近的尝试 但它们似乎不正确 提前致谢 Java菜鸟 当前有效的 XML
  • 主题以编程方式设置。如何重新加载 Activity 来应用

    如何在不重新启动整个应用程序的情况下应用主题 如果我这样做startActivity getIntent finish 活动退出并且不重新启动 是否可以简单地重新启动 重新创建活动来应用主题 它的顺序不正确 finish intent ne
  • 通过 XML 将重复事件添加到 Google 日历

    我正在尝试通过协议 API 将重复事件添加到我的日历中 我从在 Google 界面中创建的事件中获取了重复标记的语法 并将其用于我的创建请求中 这是我提交的内容
  • 检查 XML 元素是否存在

    如何验证 XML 文件中是否存在特定元素 假设我有一个不断变化的 XML 文件 我需要在读取 解析它之前验证每个元素是否存在 if doc SelectSingleNode mynode null 应该这样做 显然 其中 doc 是您的 X
  • Booking.com酒店管理API

    我拥有一家酒店 并在 booking com 上查看了 API 因为我想创建自己的前端界面来更新我的酒店房价 房间数 以及通过该 API 上传图片 更新酒店描述 然而 我唯一能找到的是一个 API 供联营公司以一定的价格获取特定位置的酒店等
  • XML-RPC 和 SOAP 有什么区别?

    我从来没有真正理解为什么 Web 服务实施者会选择其中之一 XML RPC 通常出现在较旧的系统中吗 任何有助于理解这一点的帮助将不胜感激 差异 SOAP 更强大 并且更受软件工具供应商 MSFT NET Java 企业版等 的青睐 SOA
  • 删除Android所有语言中的字符串

    我有一个包含多个翻译的应用程序 我想删除一些字符串 我怎样才能重构并删除它们一次 例如在默认情况下strings xml文件并自动将删除传播到其他翻译的其他 strings xml 文件 您可以通过 Android Studio 中的 翻译
  • 在 System Groovy 中暂时禁用 Jenkins 服务器上的 SCM 轮询

    我们有一个 Jenkins 服务器 正在运行 20 到 30 个作业 由于构建过程相当复杂 我们将实际构建分解为 1 个子构建 其中一些可以同时运行 其他则必须遵循之前的构建步骤 因此 我们将每个构建步骤分为 3 组 这三组在构建进行时会被
  • Spring-ws:如何从没有“Request”元素的 xsd 创建 Wsdl

    尝试为客户端实现 SOAP Web 服务 我需要一个 wsdl 文件来通过soapUI 测试该服务 但正如您在下面看到的 这个 xsd 没有 Request 和 Response 方法 所有请求和响应都被定义为基本 ServiceProvi
  • 使用 Jackson 使用不带注释的属性来序列化 xml

    我目前正在使用 Jackson 编写一些代码 将遗留 POJO 序列化为 XML 但我需要使用属性而不是子元素来序列化它们 有没有办法使用 Jackson 来做到这一点 而不需要向遗留类添加注释 有没有办法使用 Jackson 来做到这一点
  • SpreadsheetML 文件扩展名被 IE 和 FF 更改 - 内容类型错误?

    我正在 PHP 中生成 SpreadsheetML 文件 当用户下载文件并保存时 默认情况下文件会另存为 Report xml 并在 Excel 中打开 但是 如果选择在 Excel 中打开文件而不是保存文件 则文件名将更改为 Report
  • 抑制 Jenkins 文件中的管道输出

    当我在詹金斯上运行构建时 它总是在执行詹金斯步骤时打印管道 控制台当前输出 Build context CI clean app clean BUILD SUCCESSFUL in 22s 2 actionable tasks 2 exec
  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • 加载数据infile,Windows和Linux的区别

    我有一个需要导入到 MySQL 表的文件 这是我的命令 LOAD DATA LOCAL INFILE C test csv INTO TABLE logs fields terminated by LINES terminated BY n

随机推荐

  • 如何获得批号的可用数量

    如何获取多个仓库中批号的可用数量 假设我有3个仓库A B和C 批号 LOT0001 我想要所有三个位置的 LOT 0001 目前可用的总数量 在 odoo 中 您可以在上下文中传递过滤器 ex context lot id owner id
  • 导入错误:您必须是 root

    我尝试在 python 3 中使用键盘库 但仍然出现导入错误 我在 Thonny 的 Windows 中运行了该程序 它工作正常 但我无法在 pi 中运行它 我尝试以 root 身份运行它并使用 sudo 命令运行它 得到相同的结果 下面是
  • nhibernate 交替批量大小

    当使用 NHibernate 执行查询时 如果批处理大小设置为大于实际返回的结果 则似乎不考虑批处理大小 我正在使用最新版本的 NHibernate 2 1 0 4000 和 Linq to NHibernate 的 GA 我有一个类似于
  • 为什么在使用 Microsoft.Bcl - 无法等待'System.Threading.Tasks.Task 时,我不能在 Windows Phone 7.1 MvvmCross 项目中使用 wait 关键字?

    使用 Microsoft Bcl Microsoft BCL Portability Pack 时 我无法在 MvvmCross Windows Phone 7 1 项目中使用 wait 关键字 我已经发布了下面描述的示例项目的代码GitH
  • 只有创建视图层次结构的原始线程才能触摸其视图错误

    一切正常 除非到达代码的最后部分 注册成功 然后标题中提到的错误出现在registerDialog消息部分中 我做错了什么吗 谁能帮我检查我的代码 非常感谢 该应用程序没有崩溃 尽管它只是退出回到应用程序主页 如果我再次按下注册按钮 它将返
  • 如何根据周对 pandas 数据框进行分区并保存为 CSV?

    我有一个熊猫数据框 如下所示 这个数据框大约一个月的时间段 如何根据周对该数据框进行分区 我需要每 4 周保存为 4 个单独的 CSV 文件 Time Stamp Id Latitude Longitude 01 10 2016 15 22
  • 使用 AngularJS ngTable 自定义过滤器

    我正在尝试使用 ngTable 构建一个表 但使用与中描述的不同的自定义过滤ngTable 页面的示例 http bazalt cms com ng table example 11 我希望进行适当的过滤 但我不希望 ngTable 呈现过
  • Cypress:在第一次失败时中断所有测试

    如何在第一次测试失败时中断所有赛普拉斯测试 我们使用信号量为每个 PR 与 Cypress 启动完整的 e2e 测试 但这需要太多时间 我想在第一次测试失败时中断所有测试 获取完整的错误是每个开发人员在开发时的职责 如果在部署之前出现任何问
  • 如何使用grep提取子字符串? [复制]

    这个问题在这里已经有答案了 可能的重复 从字符串中提取正则表达式结果并将其写入变量 https stackoverflow com questions 3148558 extract regexp result from string an
  • 生成字符串列表的所有组合

    我想生成一个字符串列表的所有可能组合的列表 它实际上是一个对象列表 但为了简单起见 我们将使用字符串 我需要这个列表 以便我可以在单元测试中测试每种可能的组合 例如 如果我有一个列表 var allValues new List
  • 在 C# 中使用派生返回类型覆盖抽象属性

    我有四节课 请求 派生请求 处理程序 派生处理程序 Handler 类有一个带有以下声明的属性 public abstract Request request get set DerivedHandler 需要重写此属性 以便它返回 Der
  • 不了解类 UNET 架构中的数据流,并且 Conv2DTranspose 层的输出存在问题

    我对修改后的 U Net 架构的输入维度有一两个问题 为了节省您的时间并更好地理解 重现我的结果 我将发布代码和输出尺寸 修改后的U Net架构是来自的MultiResUNet架构https github com nibtehaz Mult
  • MKMapView 崩溃

    我无法确定崩溃的具体时间 因为有时会发生 但大多数时候不会 当添加新注释并且图钉下降时 或者当图钉位置发生更改 拖动 时 它会崩溃 我的ios版本是4 3 1 Crash Thread 0 Crashed 0 libobjc A dylib
  • asp.net在gridview中查找控件

    如何使用查找控件访问Label4 感谢您的任何帮助 您可以提供
  • 如何在共享主机上托管 codeigniter 4 网站? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我刚刚创建了一个 codeigniter4 项目 我想将其上传到 sharehosting 上 但我的网站无法访问 它给出了服务器错误 出
  • 如何在 C# Windows 应用程序中引用网站用户控件?

    我在 Windows C 应用程序中有一个解决方案 其中我也有一个网站 在网站中我有 1 个用户控件 现在我希望在同一解决方案的其他 C 项目中使用用户控件 怎么做 那是不可能的 您必须为 Windows 应用程序重新创建它 您可以重用的是
  • Angular 2:路由参数更改,重新加载同一页面?

    我有一个带有参数的路由 当转到页面 users 123 时 其中 123 是调用 ngOnInit 的参数 我获取我的参数并调用我的方法来获取用户 但是 当我在该页面上单击第二个链接 users 456 时 将不再调用 ngOnInit 因
  • 如何使用Struts2 Jquery插件实现过滤器搜索

    我正在尝试为我的 Struts2 jquery 网格实现过滤器搜索 如果我搜索任何字符串 通过 jquery 过滤器文本框 那么它会调用我的操作类 但我无法在我的操作类中获取搜索字符串 我尝试在我的 Action 类中打印此行 但搜索字符串
  • 使用 scikit-learn 运行 k-fold 后如何访问数据集?

    我正在尝试应用 kfold 方法 但我不知道如何访问生成的训练和测试集 在浏览了几个博客和 scikitlearn 用户指南后 人们唯一要做的就是打印训练和测试集 这可能适用于小型数据框 但对于较大的数据框则没有用 谁能帮我 我正在使用的数
  • getNodeValue() 返回 null,尽管响应 xml 持有者不返回 null

    我正在使用 SOAP UI GetCityWeatherByZip 的演示 Web 服务 该脚本从 csv 文件中读取不同的邮政编码 将它们传递到请求 xml 中 获取响应并将结果存储在 csv 文件中 ulresp 变量用于存储响应 并且