C#对XML、JSON等格式的解析

简介: C#对XML、JSON等格式的解析一、C#对XML格式数据的解析1、用XMLDocument来解析 XmlDocument xmlDocument = new XmlDocument(); xmlDocument.

C#对XML、JSON等格式的解析

一、C#对XML格式数据的解析

1、用XMLDocument来解析

 XmlDocument xmlDocument = new XmlDocument();
 xmlDocument.Load("test.xml");
 
 //创建新节点 
 XmlElement nn = xmlDocument.CreateElement("image");
 nn.SetAttribute("imageUrl", "6.jpg");
 
 XmlNode node = xmlDocument.SelectSingleNode("content/section/page/gall/folder");//定位到folder节点
 node.AppendChild(nn);//附加新节点
 
 //保存
 xmlDocument.Save("test.xml");

2、用Linq to XML来解析

可以通过遍历,来获得你想要的节点的内容或属性

            XElement root = XElement.Load("test.xml");
            foreach (XAttribute att in root.Attributes())
            {
                root.Add(new XElement(att.Name, (string)att));
            }
            Console.WriteLine(root);

3、附一个详细点的例子

比如要解析如下的xml文件,将其转化为Ilist对象。

<?xml version="1.0" encoding="utf-8"?>
<Car>
  <carcost>
    <ID>20130821133126</ID>
    <uptime>60</uptime>
    <downtime>30</downtime>
    <price>0.4</price>
  </carcost>
  <carcost>
    <ID>20130821014316</ID>
    <uptime>120</uptime>
    <downtime>60</downtime>
    <price>0.3</price>
  </carcost>
  <carcost>
    <ID>20130822043127</ID>
    <uptime>30</uptime>
    <downtime>0</downtime>
    <price>0.5</price>
  </carcost>
  <carcost>
    <ID>20130822043341</ID>
    <uptime>120以上!</uptime>
    <downtime>120</downtime>
    <price>0.2</price>
  </carcost>
</Car>
在控制台应用程序中输入如下代码即可。

    class Program
    {
        static void Main(string[] args)
        {
            IList<CarCost> resultList = new List<CarCost>();

            XmlDocument xmlDocument = new XmlDocument();
            xmlDocument.Load("test.xml");

            XmlNodeList xmlNodeList = xmlDocument.SelectSingleNode("Car").ChildNodes;
            foreach (XmlNode list in xmlNodeList)
            {
                CarCost carcost = new CarCost
                (
                    list.SelectSingleNode("ID").InnerText,
                    list.SelectSingleNode("uptime").InnerText,
                    list.SelectSingleNode("downtime").InnerText,
                    float.Parse(list.SelectSingleNode("price").InnerText)
                );
                resultList.Add(carcost);
            }

            IEnumerator enumerator = resultList.GetEnumerator();
            while (enumerator.MoveNext())
            {
                CarCost carCost = enumerator.Current as CarCost;
                Console.WriteLine(carCost.ID + " " + carCost.UpTime + " " + carCost.DownTime + " " + carCost.Price);
            }
        }
    }

    public class CarCost
    {
        public CarCost(string id, string uptime, string downtime, float price)
        {
            this.ID = id;
            this.UpTime = uptime;
            this.DownTime = downtime;
            this.Price = price;
        }
        public string ID { get; set; }
        public string UpTime { get; set; }
        public string DownTime { get; set; }
        public float Price { get; set; }
    }

4、通过xpath获取复杂xml节点的属性

    class Program
    {
        static void Main(string[] args)
        {
            string xml = "<?xml version=\"1.0\" encoding=\"utf-8\" ?>"
+ "<Flow>"
    + "<FlowInfo FlowID=\"100\" FlowName=\"某个数据\">"
        + "<NodeConfig NodeName=\"阿士大夫\" NodeID=\"10001\">"
          + "<TabConfigList>"
            + "<TabConfig TabName=\"是说\">"
              + "<FormList>"
                + "<Form ID=\"formXMXX\" Name=\"是说\" FormPath=\"CRYW/XMSL.aspx\" Editable=\"true\" Visible=\"false\"/>"
              + "</FormList>"
            + "</TabConfig>"
            + "<TabConfig TabName=\"消息\">"
              + "<FormList>"
                + "<Form ID=\"formsAS\" Name=\"消息\" FormPath=\"。。。\" Editable=\"true\" Visible=\"false\"/>"
              + "</FormList>"
            + "</TabConfig>"
          + "</TabConfigList>"
          + "<ToolList>"
            + "<Tool Name=\"是的\" ID=\"btn_Save\" Visible=\"true\" Icon=\"icon-save\" OnClientClick=\"return validate(); \"/>"
             + "<Tool Name=\"放到\" ID=\"btn_Send\" Visible=\"true\" Icon=\"icon-back\" OnClientClick=\"return validate(); \"/>"
           + "</ToolList>"
        + "</NodeConfig>"
        + "<NodeConfig NodeName=\"阿士大夫1\"  NodeID=\"10006\">"
          + "<TabConfigList>"
            + "<TabConfig TabName=\"是说1\">"
              + "<FormList>"
                + "<Form ID=\"formASD\" Name=\"是说1\" FormPath=\"CRYW/XMSL.aspx\" Editable=\"true\" Visible=\"false\"/>"
                + "<Form ID=\"formAEW\" Name=\"是说1\" FormPath=\"CRYW/AAA.aspx\" Editable=\"true\" Visible=\"false\"/>"
              + "</FormList>"
            + "</TabConfig>"
            + "<TabConfig TabName=\"消息22\">"
              + "<FormList>"
                + "<Form ID=\"formQWER\" Name=\"消息22\" FormPath=\"。。。\" Editable=\"true\" Visible=\"false\"/>"
              + "</FormList>"
            + "</TabConfig>"
          + "</TabConfigList>"
          + "<ToolList>"
            + "<Tool Name=\"是的12\" ID=\"btn_Save\" Visible=\"true\" Icon=\"icon-save\" OnClientClick=\"return validate(); \"/>"
             + "<Tool Name=\"放到21\" ID=\"btn_Send\" Visible=\"true\" Icon=\"icon-back\" OnClientClick=\"return validate(); \"/>"
           + "</ToolList>"
        + "</NodeConfig>"
    + "</FlowInfo>"
    + "<FlowInfo FlowID=\"103\" FlowName=\"某个数据\">"
        + "<NodeConfig NodeName=\"阿士大夫\"  NodeID=\"10022\">"
          + "<TabConfigList>"
            + "<TabConfig TabName=\"是说\">"
              + "<FormList>"
                + "<Form ID=\"formDFHF\" Name=\"是说\" FormPath=\"CRYW/XMSL.aspx\" Editable=\"true\" Visible=\"false\"/>"
              + "</FormList>"
            + "</TabConfig>"
            + "<TabConfig TabName=\"消息\">"
              + "<FormList>"
                + "<Form ID=\"formWQRW\" Name=\"消息\" FormPath=\"。。。\" Editable=\"true\" Visible=\"false\"/>"
              + "</FormList>"
            + "</TabConfig>"
          + "</TabConfigList>"
          + "<ToolList>"
            + "<Tool Name=\"是的\" ID=\"btn_Save\" Visible=\"true\" Icon=\"icon-save\" OnClientClick=\"return validate(); \"/>"
             + "<Tool Name=\"放到\" ID=\"btn_Send\" Visible=\"true\" Icon=\"icon-back\" OnClientClick=\"return validate(); \"/>"
           + "</ToolList>"
        + "</NodeConfig>"
        + "<NodeConfig NodeName=\"阿士大夫1\"  NodeID=\"10012\">"
          + "<TabConfigList>"
            + "<TabConfig TabName=\"是说1\">"
              + "<FormList>"
                + "<Form ID=\"formFHDFGH\" Name=\"是说1\" FormPath=\"CRYW/XMSL.aspx\" Editable=\"true\" Visible=\"false\"/>"
              + "</FormList>"
            + "</TabConfig>"
            + "<TabConfig TabName=\"消息22\">"
              + "<FormList>"
                + "<Form ID=\"formASDS\" Name=\"消息22\" FormPath=\"。。。\" Editable=\"true\" Visible=\"false\"/>"
              + "</FormList>"
            + "</TabConfig>"
          + "</TabConfigList>"
         + "<ToolList>"
            + "<Tool Name=\"是的12\" ID=\"btn_Save\" Visible=\"true\" Icon=\"icon-save\" OnClientClick=\"return validate(); \"/>"
             + "<Tool Name=\"放到21\" ID=\"btn_Send\" Visible=\"true\" Icon=\"icon-back\" OnClientClick=\"return validate(); \"/>"
           + "</ToolList>"
        + "</NodeConfig>"
    + "</FlowInfo>"
+ "</Flow>";

            XmlDocument doc = new XmlDocument();
            doc.LoadXml(xml);//xml为你上面的一大串xml

            var node = doc.SelectSingleNode("//FlowInfo[@FlowID='100']/NodeConfig[@NodeID='10006']//Form[@ID='formAEW']");
            if (node != null && node.Attributes != null)
            {
                Console.WriteLine(node.Attributes["Editable"].Value);//true
            }
        }
    }


二、C#对JSON格式数据的解析

引用Newtonsoft.Json.dll文件,来解析。

比如:有个要解析的JSON字符串

[{"TaskRoleSpaces":"","TaskRoles":"","ProxyUserID":"5d9ad5dc1c5e494db1d1b4d8d79b60a7","UserID":"5d9ad5dc1c5e494db1d1b4d8d79b60a7","UserName":"姓名","UserSystemName":"2234","OperationName":"送合同负责人","OperationValue":"同意","OperationValueText":"","SignDate":"2013-06-19 10:31:26","Comment":"同意","FormDataHashCode":"","SignatureDivID":""},{"TaskRoleSpaces":"","TaskRoles":"","ProxyUserID":"2c96c3943826ea93013826eafe6d0089","UserID":"2c96c3943826ea93013826eafe6d0089","UserName":"姓名2","UserSystemName":"1234","OperationName":"送合同负责人","OperationValue":"同意","OperationValueText":"","SignDate":"2013-06-20 09:37:11","Comment":"同意","FormDataHashCode":"","SignatureDivID":""}]

首先定义个实体类:

    public class JobInfo
    {
        public string TaskRoleSpaces { get; set; }
        public string TaskRoles { get; set; }
        public string ProxyUserID { get; set; }
        public string UserID { get; set; }
        public string UserName { get; set; }
        public string UserSystemName { get; set; }
        public string OperationName { get; set; }
        public string OperationValue { get; set; }
        public string OperationValueText { get; set; }
        public DateTime SignDate { get; set; }
        public string Comment { get; set; }
        public string FormDataHashCode { get; set; }
        public string SignatureDivID { get; set; }
    }
然后在控制台Main函数内部输入如下代码:

string json = @"[{'TaskRoleSpaces':'','TaskRoles':'','ProxyUserID':'5d9ad5dc1c5e494db1d1b4d8d79b60a7','UserID':'5d9ad5dc1c5e494db1d1b4d8d79b60a7','UserName':'姓名','UserSystemName':'2234','OperationName':'送合同负责人','OperationValue':'同意','OperationValueText':'','SignDate':'2013-06-19 10:31:26','Comment':'同意','FormDataHashCode':'','SignatureDivID':''},{'TaskRoleSpaces':'','TaskRoles':'','ProxyUserID':'2c96c3943826ea93013826eafe6d0089','UserID':'2c96c3943826ea93013826eafe6d0089','UserName':'姓名2','UserSystemName':'1234','OperationName':'送合同负责人','OperationValue':'同意','OperationValueText':'','SignDate':'2013-06-20 09:37:11','Comment':'同意','FormDataHashCode':'','SignatureDivID':''}]
";
 
            List<JobInfo> jobInfoList = JsonConvert.DeserializeObject<List<JobInfo>>(json);
 
            foreach (JobInfo jobInfo in jobInfoList)
            {
                Console.WriteLine("UserName:" + jobInfo.UserName + "UserID:" + jobInfo.UserID);
            }

这样就可以正常输出内容了。

我想肯定有人会问,如果有多层关系的json字符串该如何处理呢?没关系,一样的处理。

比如如何解析这个json字符串:[{'phantom':true,'id':'20130717001','data':{'MID':1019,'Name':'aaccccc','Des':'cc','Disable':'启用','Remark':'cccc'}}]  ?

首先还是定义实体类:

    public class Info
    {
        public string phantom { get; set; }
        public string id { get; set; }
        public data data { get; set; }
    }

    public class data
    {
        public int MID { get; set; }
        public string Name { get; set; }
        public string Des { get; set; }
        public string Disable { get; set; }
        public string Remark { get; set; }
    }
然后在main方法里面,键入:

            string json = @"[{'phantom':true,'id':'20130717001','data':{'MID':1019,'Name':'aaccccc','Des':'cc','Disable':'启用','Remark':'cccc'}}]";
            List<Info> infoList = JsonConvert.DeserializeObject<List<Info>>(json);

            foreach (Info info in infoList)
            {
                Console.WriteLine("id:" + info.data.MID);
            }
按照我们的预期,应该能够得到1019的结果。

截图为证:

—————————————————————————————————————————————————————————————————————————————

再附一个JSON解析的例子,来自于兔子家族—二哥在本篇博客下的回复。

JSON字符串1:{success:true,data:{id:100001,code:\"JTL-Z38005\",name:\"奥迪三轮毂\",location:\"A-202\",qty:100,bins:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\",location:\"A-001\",qty:100},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\",location:\"A-002\",qty:100}]}}

定义数据结构:

  public class Data
    {
        public Boolean success { get; set; }
        public Data1 data { get; set; }
    }

    public class Data1
    {
        public Int32 id { get; set; }
        public string code { get; set; }
        public string name { get; set; }
        public string location { get; set; }
        public Int32 qty { get; set; }
        public List<Data2> bins { get; set; }
    }

    public class Data2
    {
        public string code { get; set; }
        public string name { get; set; }
        public string location { get; set; }
        public Int32 qty { get; set; }
    }
Main函数:

 class Program
    {
        static void Main(string[] args)
        {
            string json = "{success:true,data:{id:100001,code:\"JTL-Z38005\",name:\"奥迪三轮毂\",location:\"A-202\",qty:100,bins:[{code:\"JTL-Z38001\",name:\"奥迪三轮毂\",location:\"A-001\",qty:100},{ code:\"JTL-Z38002\",name:\"奥迪三轮毂\",location:\"A-002\",qty:100}]}}";
            Data data = JsonConvert.DeserializeObject<Data>(json);

            foreach (var item in data.data.bins)
            {
                //输出:JTL-Z38001、JTL-Z38002,其它类似
                Console.WriteLine(item.code);
            }
        }
    }

JSON字符串2:{\"success\":true,\"data\":{\"name\":\"张三\",\"moulds\":{\"stockImport\":true,\"stockExport\":true,\"justifyLocation\":true,\"justifyBin\":false,\"binRelease\":false}}}

在控制台应用程序下的完整代码:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string json = "{\"success\":true,\"data\":{\"name\":\"张三\",\"moulds\":{\"stockImport\":true,\"stockExport\":true,\"justifyLocation\":true,\"justifyBin\":false,\"binRelease\":false}}}";
            Data data = JsonConvert.DeserializeObject<Data>(json);
            Console.WriteLine(data.data.moulds.binRelease);//输出False
        }
    }

    public class Data
    {
        public Boolean success { get; set; }
        public Data1 data { get; set; }
    }

    public class Data1
    {
        public string name { get; set; }
        public Data2 moulds { get; set; }
    }

    public class Data2
    {
        public Boolean stockImport { get; set; }
        public Boolean stockExport { get; set; }
        public Boolean justifyLocation { get; set; }
        public Boolean justifyBin { get; set; }
        public Boolean binRelease { get; set; }
    }
}

JSON字符串3:

{

    "success": true,
    "data": {
        "id": 100001,
        "bin": "JIT-3JS-2K",
        "targetBin": "JIT-3JS-3K",
        "batchs": [
            "B20140101",
            "B20140102"
        ]
    }
}

他的问题主要是不知道batchs这里怎么处理,其实很简单就是一个数组而已。

完整代码如下:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string json = "{\"success\": true,\"data\": {\"id\": 100001,\"bin\": \"JIT-3JS-2K\",\"targetBin\": \"JIT-3JS-3K\",\"batchs\": [\"B20140101\",\"B20140102\"]}}";
            Data data = JsonConvert.DeserializeObject<Data>(json);

            foreach (var item in data.data.batchs)
            {
                Console.WriteLine(item);//输出:B20140101、B20140102
            }
        }
    }

    public class Data
    {
        public Boolean success { get; set; }

        public Data1 data { get; set; }
    }

    public class Data1
    {
        public Int32 id { get; set; }

        public string bin { get; set; }

        public string targetBin { get; set; }

        public string[] batchs { get; set; }
    }
}

除了上述返回类的实体对象做法之外,JSON.NET还提供了JObject类,可以取自己指定节点的内容。

比如:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string j = "{success:true,data:{ bin:{code:\"JTL-Z38001\",name:\"奥迪三轮毂\",location:\"A-001\",qty:100}}}";
            JObject jo = (JObject)JsonConvert.DeserializeObject(j);
            Console.WriteLine(jo);
        }
    }

    public class Data
    {
        public Boolean success { get; set; }
        public Data1 data { get; set; }
    }

    public class Data1
    {
        public Data2 bin { get; set; }
    }

    public class Data2
    {
        public string code { get; set; }
        public string name { get; set; }
        public string location { get; set; }
        public Int32 qty { get; set; }
    }
}

直接运行,返回结果如下:


如果输出内容修改为:

Console.WriteLine(jo["data"]);


继续取bin节点。

Console.WriteLine(jo["data"]["bin"]);


最后我们取其中name对应的value。

Console.WriteLine(jo["data"]["bin"]["name"]);


一步一步的获取了JSON字符串对应的Value。

—————————————————————————————————————————————————————————————————————————————

群里有人提出一个问题,比如我要生成如下的JSON字符串,该如何处理呢?

{
    "id": 1,
    "value": "cate",
    "child": [
        {
            "id": 1,
            "value": "cate",
            "child": [
                
            ]
        },
        {
            "id": 1,
            "value": "cate",
            "child": [
                {
                    "id": 2,
                    "value": "cate2",
                    "child": [
                        {
                            "id": 3,
                            "value": "cate3",
                            "child": [
                                
                            ]
                        }
                    ]
                }
            ]
        }
    ]
}

通过观察我们会发现,其实规律比较好找,就是包含id、value、child这样的属性,child又包含id、value、child这样的属性,可以无限循环下去,是个典型的树形结构。

完整的代码如下:

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Data data = new Data();
            data.id = 1;
            data.value = "cate";
            data.child = new List<Data>() 
            { 
                new Data(){ id=1,value="cate",child=new List<Data>(){}} ,
                new Data(){ id=1,value="cate",child=new List<Data>()
                { 
                    new Data()
                    { 
                        id=2, 
                        value="cate2" , 
                        child = new List<Data>()
                        { 
                            new Data()
                            {
                                id = 3,
                                value = "cate3",
                                child = new List<Data>(){},
                            }
                        },
                    }
                }} ,
            };

            //序列化为json字符串
            string json = JsonConvert.SerializeObject(data);
            Console.WriteLine(json);

            //反序列化为对象
            Data jsonData = JsonConvert.DeserializeObject<Data>(json);
        }
    }

    public class Data
    {
        public int id { get; set; }
        public string value { get; set; }
        public List<Data> child { get; set; }
    }
}

我们验证一下生成的结果:

 JObject jo = (JObject)JsonConvert.DeserializeObject(json);
 Console.WriteLine(jo);


再来一个复杂点的JSON结构:

[
    {
        "downList": [],
        "line": {
            "Id": -1,
            "Name": "admin",
            "icCard": "1"
        },
        "upList": [
            {
                "endTime": "18:10",
                "startTime": "06:40",
                "sId": 385,
                "sType": "38"
            },
            {
                "endTime": "18:10",
                "startTime": "06:40",
                "sId": 1036,
                "sType": "38"
            }
        ]
    },
    {
        "downList": [],
        "line": {
            "Id": -1,
            "Name": "admin",
            "icCard": "1"
        },
        "upList": [
            {
                "endTime": "18:10",
                "startTime": "06:40",
                "sId": 385,
                "sType": "38"
            },
            {
                "endTime": "18:10",
                "startTime": "06:40",
                "sId": 1036,
                "sType": "38"
            }
        ]
    }
]


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string jsonString = "[{\"downList\": [],\"line\": {\"Id\": -1,\"Name\": \"admin\",\"icCard\": \"1\"},\"upList\": [{\"endTime\": \"18:10\",\"startTime\": \"06:40\",\"sId\": 385,\"sType\": \"38\"},{\"endTime\": \"18:10\",\"startTime\": \"06:40\",\"sId\": 1036,\"sType\": \"38\"}]},{\"downList\": [],\"line\": {\"Id\": -1,\"Name\": \"admin\",\"icCard\": \"1\"},\"upList\": [{\"endTime\": \"18:10\",\"startTime\": \"06:40\",\"sId\": 385,\"sType\": \"38\"},{\"endTime\": \"18:10\",\"startTime\": \"06:40\",\"sId\": 1036,\"sType\": \"38\"}]}]";
            Data[] datas = JsonConvert.DeserializeObject<Data[]>(jsonString);

            foreach (Data data in datas)
            {
                downList[] downList = data.downList;
                line line = data.line;
                upList[] upLists = data.upList;

                //输出
                Console.WriteLine(string.Join(",", line.Id, line.Name, line.icCard));
                foreach (upList upList in upLists)
                {
                    Console.WriteLine(string.Join(",", upList.endTime, upList.startTime, upList.sId, upList.sType));
                }
                Console.WriteLine("-----------------------------------------------");
            }
        }
    }


    public class Data
    {
        public downList[] downList { get; set; }
        public line line { get; set; }
        public upList[] upList { get; set; }
    }

    public class downList
    {

    }

    public class line
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public string icCard { get; set; }
    }

    public class upList
    {
        public string endTime { get; set; }

        public string startTime { get; set; }

        public int sId { get; set; }

        public string sType { get; set; }
    }
}


附Newtonsoft.Json.dll下载地址:下载吧


目录
相关文章
|
1月前
|
XML 前端开发 C#
C#编程实践:解析HTML文档并执行元素匹配
通过上述步骤,可以在C#中有效地解析HTML文档并执行元素匹配。HtmlAgilityPack提供了一个强大而灵活的工具集,可以处理各种HTML解析任务。
126 19
|
5月前
|
存储 算法 安全
如何控制上网行为——基于 C# 实现布隆过滤器算法的上网行为管控策略研究与实践解析
在数字化办公生态系统中,企业对员工网络行为的精细化管理已成为保障网络安全、提升组织效能的核心命题。如何在有效防范恶意网站访问、数据泄露风险的同时,避免过度管控对正常业务运作的负面影响,构成了企业网络安全领域的重要研究方向。在此背景下,数据结构与算法作为底层技术支撑,其重要性愈发凸显。本文将以布隆过滤器算法为研究对象,基于 C# 编程语言开展理论分析与工程实践,系统探讨该算法在企业上网行为管理中的应用范式。
161 8
|
13天前
|
XML 数据采集 API
用Lxml高效解析XML格式数据:以天气API为例
免费Python教程:实战解析中国天气网XML数据,详解Lxml库高效解析技巧、XPath用法、流式处理大文件及IP封禁应对策略,助你构建稳定数据采集系统。
108 0
|
5月前
|
存储 监控 算法
解析公司屏幕监控软件中 C# 字典算法的数据管理效能与优化策略
数字化办公的时代背景下,企业为维护信息安全并提升管理效能,公司屏幕监控软件的应用日益普及。此软件犹如企业网络的 “数字卫士”,持续记录员工电脑屏幕的操作动态。然而,伴随数据量的持续增长,如何高效管理这些监控数据成为关键议题。C# 中的字典(Dictionary)数据结构,以其独特的键值对存储模式和高效的操作性能,为公司屏幕监控软件的数据管理提供了有力支持。下文将深入探究其原理与应用。
113 4
|
6月前
|
机器学习/深度学习 监控 算法
员工上网行为监控软件中基于滑动窗口的C#流量统计算法解析​
在数字化办公环境中,员工上网行为监控软件需要高效处理海量网络请求数据,同时实时识别异常行为(如高频访问非工作网站)。传统的时间序列统计方法因计算复杂度过高,难以满足低延迟需求。本文将介绍一种基于滑动窗口的C#统计算法,通过动态时间窗口管理,实现高效的行为模式分析与流量计数。
175 2
|
7月前
|
存储 Java 文件存储
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录—— logback.xml 配置文件解析
本文解析了 `logback.xml` 配置文件的详细内容,包括日志输出格式、存储路径、控制台输出及日志级别等关键配置。通过定义 `LOG_PATTERN` 和 `FILE_PATH`,设置日志格式与存储路径;利用 `&lt;appender&gt;` 节点配置控制台和文件输出,支持日志滚动策略(如文件大小限制和保存时长);最后通过 `&lt;logger&gt;` 和 `&lt;root&gt;` 定义日志级别与输出方式。此配置适用于精细化管理日志输出,满足不同场景需求。
1872 1
|
4月前
|
JSON 前端开发 应用服务中间件
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据的方案
最后,记得在任何生产环境部署之前,进行透彻测试以确保一切运转如预期。遵循这些战术,守卫你的网络城堡不再是难题。
217 3
|
7月前
|
XML JavaScript Android开发
【Android】网络技术知识总结之WebView,HttpURLConnection,OKHttp,XML的pull解析方式
本文总结了Android中几种常用的网络技术,包括WebView、HttpURLConnection、OKHttp和XML的Pull解析方式。每种技术都有其独特的特点和适用场景。理解并熟练运用这些技术,可以帮助开发者构建高效、可靠的网络应用程序。通过示例代码和详细解释,本文为开发者提供了实用的参考和指导。
213 15
|
7月前
|
监控 算法 安全
基于 C# 的内网行为管理软件入侵检测算法解析
当下数字化办公环境中,内网行为管理软件已成为企业维护网络安全、提高办公效率的关键工具。它宛如一位恪尽职守的网络守护者,持续监控内网中的各类活动,以确保数据安全及网络稳定。在其诸多功能实现的背后,先进的数据结构与算法发挥着至关重要的作用。本文将深入探究一种应用于内网行为管理软件的 C# 算法 —— 基于二叉搜索树的入侵检测算法,并借助具体代码例程予以解析。
127 4
|
9月前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。

热门文章

最新文章

推荐镜像

更多
  • DNS