栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

XML格式文本解析(包含python和C#2种代码处理)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

XML格式文本解析(包含python和C#2种代码处理)

XML格式文本解析(包含python和C#2种代码处理) 原始XML文本内容如下




    
        
            
                
                    2022-07-11T08:29:29
                    TrackingShipmentFST_RIT_Data
                    20220711082929_52d4_8956d7a1-b491-4e36-99ac-9d9483c2eebe
                
            
            
                
                    5980622970
                    
                        Success
                    
                    
                        
                            HKG
                            Hong Kong-HK
                        
                        
                            TSR
                            Timisoara-RO
                            TSR
                        
                        EMPOWER SCM LTD
                        SC SOLAR POERR SOLUTIONS SRL
                        2021-10-05T16:23:48
                        6
                        102.000
                        K
                        P
                        INVERTER
                        
                            HONG KONG
                            Fau Shan Road,NT,Hong Kong
                            HK
                        
                        
                            LIPOVA
                            315400 ROMANIA CUI:43855010
                            AR
                            315400
                            RO
                        
                    
                    
                        
                            
                                
                                    5980622970
                                    JD014600008851661450
                                    1
                                    44.000
                                    44.000
                                    41.000
                                    18.500
                                    47.000
                                    45.000
                                    42.000
                                    18.000
                                    COD
                                    15.880
                                    K
                                
                                
                            
                            
                                
                                    5980622970
                                    JD014600008851661445
                                    2
                                    45.000
                                    36.000
                                    45.000
                                    16.500
                                    47.000
                                    42.000
                                    40.000
                                    16.350
                                    COD
                                    14.580
                                    K
                                
                                
                            
                        
                    
                
            
        
    




python处理 1. 正则匹配法

根据xml特性,每个标签都是以类似格式开头和结束,可以可以使用正则直接匹配出来。



代码如下:

import re

def get_file_content(filename):
    try:
        with open(file=filename, mode="r", encoding="utf-8") as f:
            return f.read()
    except:
        return ""
        
"""正则匹配法来读取XML文件内容"""

def re_get_xml_value(text, start_str, end_str):
    try:
        return re.findall(".*%s(.*?)%s.*" % (start_str, end_str), text)
    except:
        return []

if __name__ == '__main__':
    xml_str = get_file_content("xml.txt")
    # 匹配唯一标签情况
    start_str = ""
    end_str = ""
    print("ActionStatus:"+re_get_xml_value(xml_str, start_str, end_str)[0])
    # 匹配多个标签情况
    start_str1 = ""
    end_str1 = ""
    for lp in re_get_xml_value(xml_str, start_str1, end_str1):
        print("LicensePlate:" + lp)

执行结果:

2. 使用xml.dom解析xml

根据xml特性,每个标签都是以类似格式开头和结束,可以可以使用正则直接匹配出来。

代码如下:

from xml.dom.minidom import parseString

def get_file_content(filename):
    try:
        with open(file=filename, mode="r", encoding="utf-8") as f:
            return f.read()
    except:
        return ""

def xml_dom_content(xml_str, tag_name):
    try:
        """使用xml.dom解析xml"""
        # 使用minidom解析器打开 XML 文档
        collection = parseString(xml_str).documentElement
        return collection.getElementsByTagName(tag_name)
    except:
        return ""

if __name__ == '__main__':
    xml_str = get_file_content("xml.txt")
    # 单个标签情况
    tag_name1 = "ActionStatus"
    xml_result1 = xml_dom_content(xml_str, tag_name1)
    for x in xml_result1:
        print(tag_name1+":"+x.childNodes[0].data)

    # 多个标签情况
    tag_name2 = "LicensePlate"
    xml_result2 = xml_dom_content(xml_str, tag_name2)
    for x in xml_result2:
        print(tag_name2 + ":" + x.childNodes[0].data)

执行结果:

C#处理 1. 正则匹配法
// 匹配单个标签情况
string startstr="";
string endstr="";
Regex rg = new Regex("(?<=(" + startstr + "))[.\s\S]*?(?=(" + endstr + "))", RegexOptions.Multiline | RegexOptions.Singleline);
if (rg.IsMatch(result))
{
    MatchCollection matchCollection = rg.Matches(result);
    foreach (Match match in matchCollection)
    {
        Console.WriteLine(startstr+":"+match.Value);
    }
}

// 匹配多个标签情况
string startstr1="";
string endstr1="";
Regex rg1 = new Regex("(?<=(" + startstr1 + "))[.\s\S]*?(?=(" + endstr1 + "))", RegexOptions.Multiline | RegexOptions.Singleline);
if (rg1.IsMatch(result))
{
    MatchCollection matchCollection1 = rg1.Matches(result);
    foreach (Match match in matchCollection1)
    {
        Console.WriteLine(startstr1+":"+match.Value);
    }
}
2. 将XML转换成Json
//XmlDocument读取xml文件
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(@"C:UsersAdministratorDocuments测试结果反馈.txt");
//转换为json
string json = JsonConvert.SerializeXmlNode(xmlDoc);
//解析json
JObject jobj = JObject.Parse(json);
Console.WriteLine(jobj["SOAP-ENV:Envelope"]["SOAP-ENV:Body"]["ser-root:trackShipmentRequestResponse"]["trackingResponse"]["ns:TrackingResponse"]["AWBInfo"]["ArrayOfAWBInfoItem"]["Status"].ToString());
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1011417.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号