当前位置: 首页 > 知识库问答 >
问题:

KARATE-XML-PRINTING子节点

宋烨烁
2023-03-14

我需要打印XML的某个子节点,它有多个子节点。我在下面给出了一个xml示例。但是,karate转换为json并以json格式打印数据;但我需要以XML形式返回。

    * def xml = 
"""
<ns4:root xmlns:ns4="http://foo.com" xmlns:ns5="http://bar.com">
 <ns4:Test>
  <ns5:code>123</ns5:code>
  <ns5:description>My Description</ns5:description>
  <ns5:SubTest>
     <ns6:code>345</ns6:code>
     <ns6:description>Your Description</ns6:description>
     <ns6:categoryCode>BH</ns6:categoryCode>
  </ns5:SubTest>
  <ns5:SubTest>
     <ns6:code>567</ns6:code>
     <ns6:description>Your Description</ns6:description>
     <ns6:categoryCode>BH</ns6:categoryCode>
  </ns5:SubTest>
  <ns5:SubTest>
     <ns6:code>784</ns6:code>
     <ns6:description>Your Description</ns6:description>
     <ns6:categoryCode>BH</ns6:categoryCode>
  </ns5:SubTest>
  <ns5:categoryCode>DUDU</ns5:categoryCode>
  <ns5:unwanted>Unwanted XML Parameter</ns5:unwanted>
 </ns4:Test>
 <ns4:Test>
  <ns5:code>675</ns5:code>
  <ns5:description>His Description</ns5:description>
  <ns5:unwanted>Unwanted XML Parameter</ns5:unwanted>
 </ns4:Test>
</ns4:root>
"""
* def PP_XML = $xml/root/Test/SubTest[2]/*
* print PP_XML
13:40:19.391 [ForkJoinPool-1-worker-1] INFO  com.intuit.karate - [print] [
    "567",
    "Your Description",
    "BH"
  ]

我也试过用下面一个;但没有运气。

* def PP_XML = $xml/root/Test/SubTest[2]
* print PP_XML

我也尝试了消除过程,通过排除其他2个子节点,如下所示;这将引发“无法转换为XML”错误。我知道这是空手道处理xml的方式,但我想知道我是否可以复制这一点。

* def PP_XML = $xml/root/Test/*[not(self::SubTest[1]) or (self::SubTest[3])]
* xml PP = PP_XML
* print PP

共有1个答案

慕云
2023-03-14
* def PP_XML = $xml/root/Test/SubTest[2]
* print PP_XML

给出:

15:21:24.723 [main] INFO  com.intuit.karate - [print] <ns5:SubTest>
  <ns6:code>567</ns6:code>
  <ns6:description>Your Description</ns6:description>
  <ns6:categoryCode>BH</ns6:categoryCode>
</ns5:SubTest>

看起来工作得很好。

 类似资料:
  • 问题内容: 我正在尝试读取xml文件,例如: 这是我到目前为止的代码: 这是我尝试编写此代码的尝试,怎么说都不成功,这就是我开始赏金的原因。这是http://pastebin.com/huKP4KED。 赏金更新: 我确实真的尝试了好几天,但现在没想到会这么难,我会接受有用的链接/书籍/教程,但更喜欢代码,因为我昨天需要这样做。 这是我需要的: 关于上面的xml: 我需要获取标题ID的值 temp

  • 问题内容: 我有一个xml代码: 我的代码: 我的问题:如何循环子节点,以便数据将变成这样: 任何帮助将不胜感激。 问题答案: 您可以使用以下功能获得所需的结果: 结果: SQLFiddle演示 了解有关功能的更多信息。 注意 :使用11.2.0.2之前的Oracle版本时,当参数设置为或(从11.2开始不推荐使用)时,您会遇到某些类型的XML查询的(错误8545377 )。将参数设置为(默认值)

  • 很多时候,您希望在网页上放置一个按钮,通过实际的打印机打印该网页的内容。 JavaScript帮助您使用window对象的print函数实现此功能。 JavaScript打印函数window.print()在执行时打印当前网页。 您可以使用onclick事件直接调用此函数,如以下示例所示。 例子 (Example) 请尝试以下示例。 <html> <head> <script t

  • 到目前为止,我们已经使用AWK的print和printf函数在标准输出上显示数据。 但是printf比我们之前看到的要强大得多。 此函数借用C语言,在生成格式化输出时非常有用。 以下是printf语句的语法 - 语法 (Syntax) printf fmt, expr-list 在上面的语法中, fmt是一串格式规范和常量。 expr-list是与格式说明符对应的参数列表。 转义序列 (Esca

  • 我的XML 我所拥有的。。 //移动到父节点以遍历其余项} 我想要的是到达“cd”节点。 在一些示例中,我看到了VTDNav。下一个_子节点似乎不可用。有人能建议如何到达我需要的节点吗?目前,我正在设法通过到达第一个_子节点,然后移动到下一个兄弟节点来实现这一点 谢谢你的帮助 当做

  • 我试图断言一个xml是否包含一个xpath。例如xpath是: 当我检查它https://www.freeformatter.com/xpath-tester.html它成功返回一个元素。 然而,当我尝试使用以下空手道机制时,它失败了: 错误是 我是不是做错了?我正试着跟着这里的医生https://github.com/intuit/karate/blob/master/karate-junit4