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();
}
}
}
}