Hướng dẫn read xml response in python - đọc phản hồi xml trong python

Tôi đang nhận được phản hồi XML từ cuộc gọi API.

Tôi cần giá trị thuộc tính "TestID" từ phản hồi này. Xin hãy giúp tôi về điều này.

r = requests.get( myconfig.URL_webpagetest + "?url=" + testurl + "&f=xml&k=" + myconfig.apikey_webpagetest )
xmltxt = r.content
print(xmltxt)
testId = XML(xmltxt).find("testId").text
r = requests.get("http://www.webpagetest.org/testStatus.php?f=xml&test=" + testId )

Phản hồi XML:

Hướng dẫn read xml response in python - đọc phản hồi xml trong python

<?xml version="1.0" encoding="UTF-8"?>
<response>
    <statusCode>200</statusCode>
    <statusText>Ok</statusText>
    <data>
        <testId>180523_YM_054fd7d84fd4ea7aed237f87289e0c7c</testId>
        <ownerKey>dfc65d98de13c4770e528ef5b65e9629a52595e9</ownerKey>
        <jsonUrl>http://www.webpagetest.org/jsonResult.php?test=180523_YM_054fd7d84fd4ea7aed237f87289e0c7c</jsonUrl>
    </data>
</response>

Lỗi sau được tạo ra:

Traceback (most recent call last):
  File "/pagePerformance.py", line 52, in <module>
    testId = XML (xmltxt).find("testId").text
AttributeError: 'NoneType' object has no attribute 'text'

Hướng dẫn read xml response in python - đọc phản hồi xml trong python

Ganjaam

7952 Huy hiệu vàng12 Huy hiệu bạc26 Huy hiệu đồng2 gold badges12 silver badges26 bronze badges

Đã hỏi ngày 23 tháng 5 năm 2018 lúc 7:15May 23, 2018 at 7:15

Hướng dẫn read xml response in python - đọc phản hồi xml trong python

3

Sử dụng các mục sau để thu thập TestID từ phản hồi:-

import xml.etree.ElementTree as ET

response_xml_as_string = "xml response string from API"
responseXml = ET.fromstring(response_xml_as_string)
testId = responseXml.find('data').find('testId')
print testId.text

Đã trả lời ngày 23 tháng 5 năm 2018 lúc 7:47May 23, 2018 at 7:47

from lxml.etree import fromstring

string = '<?xml version="1.0" encoding="UTF-8"?> <response> <statusCode>200</statusCode> <statusText>Ok</statusText> <data><testId>180523_YM_054fd7d84fd4ea7aed237f87289e0c7c</testId> <ownerKey>dfc65d98de13c4770e528ef5b65e9629a52595e9</ownerKey> <jsonUrl>http://www.webpagetest.org/jsonResult.php?test=180523_YM_054fd7d84fd4ea7aed237f87289e0c7c</jsonUrl> </data> </response>'

response = fromstring(string.encode('utf-8'))
elm = response.xpath('/response/data/testId').pop()
testId = elm.text

Bằng cách này, bạn có thể tìm kiếm bất kỳ phần tử nào trong XML từ phần tử gốc/cha mẹ thông qua XPath.

Lưu ý bên: Tôi không đặc biệt như sử dụng phương thức POP để xóa mục khỏi một danh sách mục. Vì vậy, nếu bất cứ ai khác có một cách tốt hơn để làm điều đó xin vui lòng cho tôi biết. Cho đến nay tôi đã xem xét:

1) elm = next (iter (answer.xpath ('/phản hồi/dữ liệu/testid')))))

2) Đơn giản chỉ cần để nó trong danh sách để nó có thể sử dụng làm Stararg

Đã trả lời ngày 25 tháng 9 năm 2018 lúc 21:34Sep 25, 2018 at 21:34

Hướng dẫn read xml response in python - đọc phản hồi xml trong python

nmctwispnmctwispnmctwisp

1671 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges

Tôi đã tìm thấy bài viết này vào một ngày khác khi nó xuất hiện trên nguồn cấp dữ liệu của tôi, và nó có thể phù hợp với nhu cầu của bạn. Tôi đã lướt qua nó, nhưng nói chung, gói phân tích dữ liệu XML và chuyển đổi các thẻ/thuộc tính/giá trị thành một từ điển. Ngoài ra, tác giả chỉ ra rằng nó cũng duy trì cấu trúc làm tổ của XML.

https://www.oreilly.com/learning/jxmlease-python-xml-conversion-data-structures

cho trường hợp sử dụng của bạn.

>>> xml = '<?xml version="1.0" encoding="UTF-8"?> <response> <statusCode>200</statusCode> <statusText>Ok</statusText> <data> <testId>180523_YM_054fd7d84fd4ea7aed237f87289e0c7c</testId> <ownerKey>dfc65d98de13c4770e528ef5b65e9629a52595e9</ownerKey> <jsonUrl>http://www.webpagetest.org/jsonResult.php?test=180523_YM_054fd7d84fd4ea7aed237f87289e0c7c</jsonUrl> </data> </response>'

>>> root = jxmlease.parse(xml)
>>> testid = root['response']['data']['testId'].get_cdata()
>>> print(testid)
>>> '180523_YM_054fd7d84fd4ea7aed237f87289e0c7c'

Đã trả lời ngày 25 tháng 9 năm 2018 lúc 22:07Sep 25, 2018 at 22:07

Hướng dẫn read xml response in python - đọc phản hồi xml trong python

nmctwispnmctwispnmctwisp

1671 Huy hiệu bạc4 Huy hiệu đồng1 silver badge4 bronze badges

0

Làm cách nào để đọc mã XML trong Python?

Để đọc một tệp XML bằng ElementTree, trước tiên, chúng tôi nhập lớp ElementTree được tìm thấy bên trong thư viện XML, dưới tên ET (thông tin chung). Sau đó chuyển tên tệp của tệp XML cho ElementTree. Phương thức Parse (), để cho phép phân tích tệp XML của chúng tôi. Sau đó, nhận được gốc (thẻ cha) của tệp XML của chúng tôi bằng GetRoot ().

Pandas có thể đọc XML không?

Thư viện phân tích dữ liệu PANDAS cung cấp các chức năng để đọc/ghi dữ liệu cho hầu hết các loại tệp. Ví dụ: nó bao gồm read_csv () và to_csv () để tương tác với các tệp CSV. Tuy nhiên, Pandas không bao gồm bất kỳ phương pháp nào để đọc và ghi các tệp XML.Pandas does not include any methods to read and write XML files.

XML Etree ElementTree trong Python là gì?

XML.Etree.Mô -đun ElementTree thực hiện một API đơn giản và hiệu quả để phân tích và tạo dữ liệu XML.Thay đổi trong phiên bản 3.3: Mô -đun này sẽ sử dụng triển khai nhanh bất cứ khi nào có sẵn.implements a simple and efficient API for parsing and creating XML data. Changed in version 3.3: This module will use a fast implementation whenever available.

Làm cách nào để đọc các tệp XML trong pyspark?

Spark Đọc tệp XML bằng API Databricks..
Spark XML Databricks phụ thuộc ..
Spark Đọc XML vào DataFrame.Thuộc tính xử lý ..
Viết dataFrame vào tệp XML.Hạn chế ..
Spark XML DataFrame to Avro File ..
Spark XML DataFrame to Parquet File ..