使用请求modu从xml文件中获取单个标记的内容

2024-10-01 02:19:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用python请求模块向soap服务发出请求,代码如下:

response = requests.get(url,data=body,headers=headers)

服务将此xml作为响应返回:

<?xml version="1.0" encoding="utf-8"?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:aa="example.com/api"><soap:Body>
            <aa:GetStockFileResponse> GetStockFileResponseType
                <aa:TestMode> boolean </aa:TestMode>
                <aa:Errors> ArrayOfError
                    <aa:Error> Error
                        <aa:Code> int </aa:Code>
                        <aa:Description> string </aa:Description>
                    </aa:Error>
                </aa:Errors>
                <aa:Warnings> ArrayOfWarning
                    <aa:Warning> Warning
                        <aa:Code> int </aa:Code>
                        <aa:Description> string </aa:Description>
                    </aa:Warning>
                </aa:Warnings>
                <aa:StockFileFormat> StockFileFormat (string) </aa:StockFileFormat>
                <aa:FieldDelimiter> StringLength1 (string) </aa:FieldDelimiter>
                <aa:File> base64Binary </aa:File>
            </aa:GetStockFileResponse>
        </soap:Body></soap:Envelope>

我需要将<aa:File> base64Binary </aa:File>的内容写入一个csv文件,这是一个base64编码的csv文件。 我编写响应的代码是:

with open ('test.csv','wb') as f:
    f.write (response.content)

很明显,它编写了整个xml。。。 如何只获取<aa:File> base64Binary </aa:File>内容?你知道吗


Tags: csv代码stringresponsecodeerrordescriptionxml
1条回答
网友
1楼 · 发布于 2024-10-01 02:19:59

像这样的解决办法?你知道吗

import re

xmlText = '<foo>Foo</foo><aa:File> base64Binary </aa:File><bar>Bar</bar>'

# Target to extract: " base64Binary "

content = re.findall(r'<aa:File>(.+?)</aa:File>', xmlText)

print(content)  # outputs " base64Binary "

相关问题 更多 >