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

使用dataprovider空手道替换XML节点键

尚鸿才
2023-03-14

我正在从一个文件中读取xml结构,并替换示例中的值

>

  • def inputXml=read('classpath:xml/input.xml')

    我的xml结构如下所示

     <input>
     <data>
     <props>
     <p n="AMOUNT">1000</p>
     <p n="NAME">name</p>
     <p n="{ACCOUNTTYPE}">purpose</p>
     </props>
     </data>
     </input>
    
    * set inputXml/input/data/props/p[@n='AMOUNT'] = <AMOUNT> -- Works fine
    * set inputXml/input/data/props/p[@n='NAME'] = <NAME> -- Works fine
    

    示例:

    |AMOUNT|NAME|ACCOUNTTYPE|PURPOSE|
    
    
    
    |100|abc|BUSINESS|smallbusiness|
    
    
    
    |2000|def|PERSONAL|home|
    

    我想更新“n”标记名ACCOUNTTYPE和与上面类似的相应目的(键和值)。空手道有没有办法做到这一点?请建议。

    Is是否可以在xml文件中使用“#(accountType)”和“#(purpose)",类似于json并运行?

  • 共有1个答案

    高嘉熙
    2023-03-14

    Is可以在xml文件中使用“#(accountType)”和“#(purpose)”

    是的。请阅读文档:https://github.com/intuit/karate#embedded-expressions

    和示例:xml.feature

    Given def user = <user><name>john</name></user>
    And def lang = 'en'
    When def session = <session><locale>#(lang)</locale><sessionUser>#(user)</sessionUser></session>
    
     类似资料:
    • 在本章中,我们将学习XML DOM对象中的替换节点操作。DOM中的所有内容都保存在分层信息单元中,替换节点提供了另一种更新这些指定节点或文本节点的方法。 以下是替换节点的两个方法 - 1. replaceChild()方法 方法用新节点替换指定的节点。 语法 具有以下语法 - 其中, - 是放入子列表的新节点。 - 是列表中要替换的节点。 此方法返回已替换的节点。 示例 以下示例(replacen

    • 功能文件-1 场景大纲:Lambda API注册 给定url ApiAdminURL 功能文件-2 给定url internalGateway 和路径 这不是将#(LocalVersion)替换为v1

    • 我有一堆XML文档,其中包含我需要用假数据替换的个人信息。Person节点包含以下元素: UUID-必填项,不应触及。 名字-可选 LastName-可选 地址-可选 个人身份-必需 一个人可能会出现很多次,在这种情况下应该使用相同的假数据,即如果两个person节点具有相同的personID,那么它们都应该接收到相同的假ID。 我已经实现了一些Java代码,这些代码从XML字符串构建一个DOM树

    • 下面是我的XSL文件的内容: 当我运行我的程序时,输出与原始XML相同。f_name和l_name节点都没有重命名,Version节点值也没有被替换。 任何帮助都将不胜感激。

    • 我需要解析和打印ns4:功能部分。空手道以json格式打印它。我试着参考这个答案。但是,我得到'ERROR:'前缀'xsi'的命名空间没有被声明.'错误,如果使用建议的xPath.即, 这是我的XML:它包含许多具有不同“ns”值的部分,但我在这里给出了一个额外的内容。 这是我使用的xPath; 注意:我将上述xml保存在一个单独的文件test1中。xml。我只是在读它并解析它的值。 这就是我得到

    • 嗨,我正在使用空手道框架工作的API测试。我需要从另一个rest调用响应设置SOAP调用负载。我使用的是嵌入式表达式,当表达式在XML的CDATA内部时,这就不起作用了。例如,SOAP调用负载具有类似于#(response.id)]]>的CDATA。嵌入式表达式不替换“response.id”。