• python解析xml字符串与xml转json


    一、python解析xml字符串

    from
    xml.dom.minidom import parseString xml_str=""" <root> <privateKey>UAP_2oSY90</privateKey> <srcContent> </srcContent> <dataContent> <syncContent dataType="1" operType="1"> <syncUnicode>0410000043</syncUnicode> <oldContent realmId="1"> <baseInfo> <deptName text="组织机构全称">旧部门</deptName> <deptUniCode text="组织机构编码">0410000043</deptUniCode> <showNum text="排序编号">9999</showNum> <deptStatus text="组织机构状态">1</deptStatus> <isCorp text="组织机构类型" deptConfId="3">1</isCorp> </baseInfo> <parentInfo> <parentCode id="8471" text="父级组织机构唯一标识" levelCode="561G.8471G" deptName="人"> 0432000000 </parentCode> </parentInfo> </oldContent> <changeContent> </changeContent> <newContent realmId="1"> <baseInfo> <deptName text="组织机构全称">新部门</deptName> <deptUniCode text="组织机构编码">0410000043</deptUniCode> <showNum text="排序编号">9999</showNum> <deptStatus text="组织机构状态">1</deptStatus> <isCorp text="组织机构类型" deptConfId="3">1</isCorp> </baseInfo> <parentInfo> <parentCode id="8471" text="父级组织机构唯一标识" levelCode="561G.8471G" deptName="人"> 0432000000 </parentCode> </parentInfo> </newContent> </syncContent> </dataContent> </root> """ doc = parseString(xml_str) collection = doc.documentElement returnInfo = collection.getElementsByTagName("deptName")[0].childNodes[0].data # 返回的是:天 dataType=collection.getElementsByTagName("syncContent")[0].getAttribute("dataType") operType=collection.getElementsByTagName("syncContent")[0].getAttribute("operType") #返回的是:1 #获取节点名称,查找元素 for i in collection.getElementsByTagName("deptName"): print (i.childNodes[0].data) #返回:旧部门 # 新部门 oldContents = collection.getElementsByTagName("oldContent") for oldContent in oldContents: baseInfos = oldContent.getElementsByTagName('baseInfo') for baseInfo in baseInfos: baseInfo.getElementsByTagName('deptName')[0].childNodes[0].data
    2、xml转json的函数
    import json
    import xmltodict
    #定义xml转json的函数
    xmlstr =""" <root>
                    <privateKey>UAP_2oSY90</privateKey>
                    <srcContent>
                    </srcContent>
                    <dataContent>
                        <syncContent dataType="1" operType="1">
                            <syncUnicode>0410000043</syncUnicode>
                            <oldContent realmId="1">
                                <baseInfo>
                                    <deptName text="组织机构全称">旧部门</deptName>
                                    <deptUniCode text="组织机构编码">0410000043</deptUniCode>
                                    <showNum text="排序编号">9999</showNum>
                                    <deptStatus text="组织机构状态">1</deptStatus>
                                    <isCorp text="组织机构类型" deptConfId="3">1</isCorp>
                                </baseInfo>
                                <parentInfo>
                                    <parentCode id="8471" text="父级组织机构唯一标识"
                                        levelCode="561G.8471G" deptName="人">
                                        0432000000
                                    </parentCode>
                                </parentInfo>
                            </oldContent>
                            <changeContent>
                            </changeContent>
                            <newContent realmId="1">
                                <baseInfo>
                                    <deptName text="组织机构全称">新部门</deptName>
                                    <deptUniCode text="组织机构编码">0410000043</deptUniCode>
                                    <showNum text="排序编号">9999</showNum>
                                    <deptStatus text="组织机构状态">1</deptStatus>
                                    <isCorp text="组织机构类型" deptConfId="3">1</isCorp>
                                </baseInfo>
                                <parentInfo>
                                    <parentCode id="8471" text="父级组织机构唯一标识"
                                        levelCode="561G.8471G" deptName="人">
                                        0432000000
                                    </parentCode>
                                </parentInfo>
                            </newContent>
                        </syncContent>
                    </dataContent>
                </root>
            """
    #parse是的xml解析器
    xmlparse = xmltodict.parse(xmlstr)
    #json库dumps()是将dict转化成json格式,loads()是将json转化成dict格式。
    #dumps()方法的ident=1,格式化json
    jsonstr = json.dumps(xmlparse,indent=1)
    print(jsonstr)
  • 相关阅读:
    [原创]中值滤波算法处理位图(C#实现)
    vue3弹窗可以拖曳、放大、缩小、最大化、最小化插件
    请博客园的高手们帮忙看一个问题 为什么 set datefirst 1 写到存储过程中就不起作用了.
    Sql server学习笔记 set 注意事项
    Sql server 学习笔记全局变量
    使用C# 发送Email 邮件方法
    给安装Visual Studio 2010遇到的一些问题建议
    IIS建立网站后显示“403.1禁止访问”的解决方法
    Window xp 换成Windows 7 C盘内留有老的windows 版本提示
    COUNT() 和Count(字段) 区别
  • 原文地址:https://www.cnblogs.com/1314520xh/p/15862035.html
Copyright © 2020-2023  润新知