C# 将xml文件转化为类

 xml 文件结构

<?xml version='1.0' encoding='GB2312'?>
<parameters>
  <version>3</version>
  <parameter_version_major>1</parameter_version_major>
  <parameter_version_minor>9</parameter_version_minor>
  <group name="NAV_WINGMAN">   
   <parameter default="1" name="NAV_WM_SELFK" type="FLOAT">
      <short_desc>触发步长</short_desc>
      <long_desc>触发步长</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0</min>
      <max>10</max>
   </parameter>
   <parameter default="-5" name="NAV_WM_UMIN" type="FLOAT">
      <short_desc>无人机最小速度</short_desc>
      <long_desc>无人机最小速度</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>-10</min>
      <max>0</max>
   </parameter>
   <parameter default="5" name="NAV_WM_UMAX" type="FLOAT">
      <short_desc>无人机最大速度</short_desc>
      <long_desc>无人机最大速度</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0</min>
      <max>10</max>
   </parameter>
   <parameter default="0.01" name="NAV_WM_PARAMK" type="FLOAT">
      <short_desc>参数K</short_desc>
      <long_desc>参数K</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0.001</min>
      <max>0.1</max>
   </parameter>
   <parameter default="0.01" name="NAV_WM_PARATAO" type="FLOAT">
      <short_desc>τ</short_desc>
      <long_desc>τ</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0.001</min>
      <max>0.1</max>
   </parameter>
   <parameter default="0.5" name="NAV_WM_PARAMPZ" type="FLOAT">
      <short_desc>Pz</short_desc>
      <long_desc>Pz</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0.01</min>
      <max>1</max>
   </parameter>
   <parameter default="2" name="NAV_WM_EXPRX" type="FLOAT">
      <short_desc>x方向相对位置</short_desc>
      <long_desc>x方向相对位置</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0</min>
      <max>10</max>
   </parameter>
   <parameter default="2" name="NAV_WM_EXPRY" type="FLOAT">
      <short_desc>y方向相对位置</short_desc>
      <long_desc>y方向相对位置</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0</min>
      <max>10</max>
   </parameter>
   <parameter default="10" name="NAV_WM_EXPDH" type="FLOAT">
      <short_desc>z方向相对位置</short_desc>
      <long_desc>z方向相对位置</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0</min>
      <max>20</max>
   </parameter>
  <group name="NAV_POS">   
   <parameter default="5" name="NAV_VEL_MAX" type="FLOAT">
      <short_desc>最大速度</short_desc>
      <long_desc>最大速度</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0</min>
      <max>20</max>
   </parameter>
   <parameter default="0" name="NAV_VEL_MIN" type="FLOAT">
      <short_desc>最小速度</short_desc>
      <long_desc>最小速度</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0</min>
      <max>20</max>
   </parameter>
  </group>
   <parameter default="2.5" name="NAV_NORMAL_V" type="FLOAT">
      <short_desc>航线巡航速度</short_desc>
      <long_desc>航线巡航速度</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0.1</min>
      <max>20</max>
   </parameter>
  </group>
  <group name="CMD">   
   <parameter default="1.25" name="CMD_TASK_TYPE" type="FLOAT">
      <short_desc>角度相关系数</short_desc>
      <long_desc>角度相关系数</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0.5</min>
      <max>2</max>
   </parameter>
 </group>
  <group name="NAV_METH">   
   <parameter default="0" name="NAV_FORM_METH" type="INT">
      <short_desc>编队方式</short_desc>
      <long_desc>编队方式,0表示跟踪航线,1表示跟踪领航者</long_desc>
      <unit>?</unit>
      <decimal>3</decimal>
      <min>0</min>
      <max>20</max>
   </parameter>
 </group>
  <group name="CTL">   
      <parameter default="1.0" name="CTL_P_LOW_V" type="FLOAT">
      <short_desc>位置模式低速度</short_desc>
      <long_desc>位置模式低速度</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0</min>
      <max>5</max>
   </parameter>
   <parameter default="3.0" name="CTL_P_CRUISE_V" type="FLOAT">
      <short_desc>位置模式正常速度</short_desc>
      <long_desc>位置模式正常速度</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0</min>
      <max>20</max>
   </parameter>
   <parameter default="0.05" name="CTL_VEL_KXY" type="FLOAT">
      <short_desc>位置模式水平速度KP</short_desc>
      <long_desc>位置模式水平速度KP</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0.001</min>
      <max>2</max>
   </parameter>
   <parameter default="0.5" name="CTL_VEL_KZ" type="FLOAT">
      <short_desc>位置模式垂直速度KP</short_desc>
      <long_desc>位置模式垂直速度KP</long_desc>
      <unit>?</unit>
      <decimal>4</decimal>
      <min>0.001</min>
      <max>3</max>
   </parameter>
 </group>
</parameters>

 转化后的代码

using System;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;

[XmlRoot("parameters")]
public class Parameters
{
    [XmlElement("version")]
    public int Version { get; set; }

    [XmlElement("parameter_version_major")]
    public int ParameterVersionMajor { get; set; }

    [XmlElement("parameter_version_minor")]
    public int ParameterVersionMinor { get; set; }

    [XmlElement("group")]
    public List<Group> Groups { get; set; }
}

public class Group
{
    [XmlAttribute("name")]
    public string Name { get; set; }

    [XmlElement("parameter")]
    public List<Parameter> Parameters { get; set; }
}

public class Parameter
{
    [XmlAttribute("default")]
    public string Default { get; set; }

    [XmlAttribute("name")]
    public string Name { get; set; }

    [XmlAttribute("type")]
    public string Type { get; set; }

    [XmlElement("short_desc")]
    public string ShortDescription { get; set; }

    [XmlElement("long_desc")]
    public string LongDescription { get; set; }

    [XmlElement("unit")]
    public string Unit { get; set; }

    [XmlElement("decimal")]
    public int Decimal { get; set; }

    [XmlElement("min")]
    public float Min { get; set; }

    [XmlElement("max")]
    public float Max { get; set; }
}

class Program
{
    static void Main()
    {
        // Example of how to deserialize XML into the C# class
        XmlSerializer serializer = new XmlSerializer(typeof(Parameters));

        using (XmlReader reader = XmlReader.Create("your_xml_file.xml"))
        {
            Parameters parameters = (Parameters)serializer.Deserialize(reader);

            // Access the parsed data as needed
            Console.WriteLine($"Version: {parameters.Version}");
            Console.WriteLine($"Parameter Version Major: {parameters.ParameterVersionMajor}");
            Console.WriteLine($"Parameter Version Minor: {parameters.ParameterVersionMinor}");

            foreach (var group in parameters.Groups)
            {
                Console.WriteLine($"Group Name: {group.Name}");

                foreach (var parameter in group.Parameters)
                {
                    Console.WriteLine($"Parameter Name: {parameter.Name}, Type: {parameter.Type}, Default: {parameter.Default}");
                    Console.WriteLine($"Short Description: {parameter.ShortDescription}");
                    Console.WriteLine($"Long Description: {parameter.LongDescription}");
                    Console.WriteLine($"Unit: {parameter.Unit}, Decimal: {parameter.Decimal}");
                    Console.WriteLine($"Min: {parameter.Min}, Max: {parameter.Max}");
                    Console.WriteLine();
                }

                Console.WriteLine();
            }
        }
    }
}

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值