如何通过文本值名称解析xml数据?通过python小型化

如何通过文本值名称解析xml数据?通过python小型化,python,xml,minidom,Python,Xml,Minidom,xml是这样的,如何解析字典数据,如: {“Text”:“大家听好了。”,“Font”:“Arial”,“Size”:20} 标记名总是“Name”和“Value”,我知道python xml模块中有一些方法,比如getElementsByTagName,有什么方法可以做到这一点吗 <effect> <name>Text</name> <eff

xml是这样的,如何解析字典数据,如:

{“Text”:“大家听好了。”,“Font”:“Arial”,“Size”:20}

标记名总是“Name”和“Value”,我知道python xml模块中有一些方法,比如getElementsByTagName,有什么方法可以做到这一点吗

                <effect>
                    <name>Text</name>
                    <effectid>Text</effectid>
                    <effectcategory>Text</effectcategory>
                    <effecttype>generator</effecttype>
                    <mediatype>video</mediatype>
                    <parameter>
                        <parameterid>str</parameterid>
                        <name>Text</name>
                        <value>Everyone listen up.</value>
                    </parameter>
                    <parameter>
                        <parameterid>fontname</parameterid>
                        <name>Font</name>
                        <value>Arial</value>
                    </parameter>
                    <parameter>
                        <parameterid>fontsize</parameterid>
                        <name>Size</name>
                        <valuemin>0</valuemin>
                        <valuemax>1000</valuemax>
                        <value>20</value>
                    </parameter>
                    <parameter>
                        <parameterid>fontstyle</parameterid>
                        <name>Style</name>
                        <valuemin>1</valuemin>
                        <valuemax>4</valuemax>
                        <valuelist>
                            <valueentry>
                                <name>Plain</name>
                                <value>1</value>
                            </valueentry>
                            <valueentry>
                                <name>Bold</name>
                                <value>2</value>
                            </valueentry>
                            <valueentry>
                                <name>Italic</name>
                                <value>3</value>
                            </valueentry>
                            <valueentry>
                                <name>Bold/Italic</name>
                                <value>4</value>
                            </valueentry>
                        </valuelist>
                        <value>1</value>
                    </parameter>
                </effect>

正文
正文
正文
发电机
视频
str
正文
大家听好了。
字体
字体
Arial
字体大小
大小
0
1000
20
方式
风格
1.
4.
平原
1.
大胆的
2.
斜体
3.
粗体/斜体
4.
1.

使用
xml.dom.minidom
解析xml从来都不是一件有趣的事(真正考虑使用,或者)

以下是您应该开始的地方:

from pprint import pprint
from xml.dom.minidom import parse, Text, parseString

data = """your xml goes here"""

dom = parseString(data)

result = {}

effect = dom.getElementsByTagName('effect')[0]
result['name'] = effect.getElementsByTagName('name')[0].firstChild.nodeValue

parameters = []
for parameter in effect.getElementsByTagName('parameter'):
    id = parameter.getElementsByTagName('parameterid')[0].firstChild.nodeValue
    name = parameter.getElementsByTagName('name')[0].firstChild.nodeValue
    value = parameter.getElementsByTagName('value')[0].firstChild.nodeValue
    parameters.append({'id': id, 'name': name, 'value': value})

result['parameters'] = parameters

pprint(result)
印刷品:

{'name': u'Text',
 'parameters': [{'id': u'str', 'name': u'Text', 'value': u'Everyone listen up.'},
                {'id': u'fontname', 'name': u'Font', 'value': u'Arial'},
                {'id': u'fontsize', 'name': u'Size', 'value': u'20'},
                {'id': u'fontstyle', 'name': u'Style', 'value': u'1'}]}

你只是在看带有
子项的
标记吗?@mgilson是的,我在看标记内部。