如何使用 Python 检查特定标签名称是否等于某个值以及 return 来自 XML 的标签内的全部数据
How to check if particular tag name equals a value and return the entire data inside the tag from XML using Python
我有一个 xml 结构如下:
<?xml version="1.0" ?>
<Parameters>
<Test name="Login" browser="chrome">
<TestParamerer version="1.2" timeout="480"/>
</Test>
<Test name="Logout" browser="chrome">
<TestParamerer version="2.3" timeout="480"/>
<Arguments name="EF" version="2.2"/>
</Test>
</<Parameters>
我需要检索 Test with name="Login" 并 return Test 标记内 JSON 格式的整个值。我是 Python 的新手,非常感谢您的帮助。
您可以使用 etree
、json
和 xmltodict
from lxml import etree
import json
import xmltodict
xml = """<?xml version="1.0" ?>
<Parameters>
<Test name="Login" browser="chrome">
<TestParamerer version="1.2" timeout="480"/>
</Test>
<Test name="Logout" browser="chrome">
<TestParamerer version="2.3" timeout="480"/>
<Arguments name="EF" version="2.2"/>
</Test>
</Parameters>"""
tree = etree.fromstring(xml)
login = tree.findall('.//Test[@name="Login"]')
# [<Element Test at 0x29bc1ac7480>] (in this case 1 element).
dict_from_xml = xmltodict.parse(etree.tostring(login[0]))
'''
OrderedDict([('Test',
OrderedDict([('@name', 'Login'),
('@browser', 'chrome'),
('TestParamerer',
OrderedDict([('@version', '1.2'),
('@timeout', '480')]))]))])
'''
# And now to json':
js = json.dumps(dict_from_xml, indent=2)
print(js)
'''
{
"Test": {
"@name": "Login",
"@browser": "chrome",
"TestParamerer": {
"@version": "1.2",
"@timeout": "480"
}
}
}
'''
我有一个 xml 结构如下:
<?xml version="1.0" ?>
<Parameters>
<Test name="Login" browser="chrome">
<TestParamerer version="1.2" timeout="480"/>
</Test>
<Test name="Logout" browser="chrome">
<TestParamerer version="2.3" timeout="480"/>
<Arguments name="EF" version="2.2"/>
</Test>
</<Parameters>
我需要检索 Test with name="Login" 并 return Test 标记内 JSON 格式的整个值。我是 Python 的新手,非常感谢您的帮助。
您可以使用 etree
、json
和 xmltodict
from lxml import etree
import json
import xmltodict
xml = """<?xml version="1.0" ?>
<Parameters>
<Test name="Login" browser="chrome">
<TestParamerer version="1.2" timeout="480"/>
</Test>
<Test name="Logout" browser="chrome">
<TestParamerer version="2.3" timeout="480"/>
<Arguments name="EF" version="2.2"/>
</Test>
</Parameters>"""
tree = etree.fromstring(xml)
login = tree.findall('.//Test[@name="Login"]')
# [<Element Test at 0x29bc1ac7480>] (in this case 1 element).
dict_from_xml = xmltodict.parse(etree.tostring(login[0]))
'''
OrderedDict([('Test',
OrderedDict([('@name', 'Login'),
('@browser', 'chrome'),
('TestParamerer',
OrderedDict([('@version', '1.2'),
('@timeout', '480')]))]))])
'''
# And now to json':
js = json.dumps(dict_from_xml, indent=2)
print(js)
'''
{
"Test": {
"@name": "Login",
"@browser": "chrome",
"TestParamerer": {
"@version": "1.2",
"@timeout": "480"
}
}
}
'''