解析XML仅返回第一个元素 [英] Parse XML only returns first element

查看:27
本文介绍了解析XML仅返回第一个元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是机器人框架的XML库的新手。 我尝试解析XML以获取其中的值,但它只能获得第一个元素。 所以我的XML是这样的:

<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Header>
    <firstElement>
        <secondElement>
            <myValue>...</myValue>
            <mySecondValue>...</mySecondValue>
            ...
        </secondElement
    </firstElement>
  </S:Header>
  <S:Body>
  ...
  </S:Body>
</S:Envelope>

我非常简短的机器人框架测试如下所示:

 ${xml}=    Parse Xml    path/to/xml
 ${first}=    get element    ${xml}    myValue
 Log  ${first}

但在解析XML时,它记录如下:

INFO : ${xml} = <Element 'Envelope' at 0x00000000042B67C8>

当然,我所有获取解析的XML中的值的尝试都失败了,我得到:

FAIL : No element matching 'myValue' found.

我做错了什么?

推荐答案

问题出在您用来查找元素的xpath上,请查看此处:https://robotframework.org/robotframework/latest/libraries/XML.html#Finding%20elements%20with%20xpath

它应该如下所示:

    ${x}=    Parse Xml    ${xml}    
    ${el_my_value}=    Get Element    ${x}    .//myValue
    Log  ${el_my_value}
    ${first_text}=    Get Element Text    ${el_my_value} 

请注意.//myValue

另外,如果要获取元素文本,则需要使用关键字Get Element Text

所以整个工作示例和结果:

*** Settings ***
Library    XML
Variables    ../../Resources/xml_test.py

*** Test Cases ***
Test XML Parsing
    ${x}=    Parse Xml    ${xml}    
    ${el_my_value}=    Get Element    ${x}    .//myValue
    Log  ${el_my_value}
    ${first_text}=    Get Element Text    ${el_my_value}    

这篇关于解析XML仅返回第一个元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆