关于解析xml《《《《《《《
- <ChargeInfo>
- <Parameter>
<Para KEY="PAR_CO_OPTML_GOAL" USING="0" MAXVAL="0" MINVAL="0">1</Para>
<Para KEY="PAR_CO_AIM_SI" USING="0" MAXVAL="0" MINVAL="0">0.45</Para>
<Para KEY="PAR_CO_CHRG_CR" USING="-1" MAXVAL="0" MINVAL="0">120</Para>
<Para KEY="PAR_CO_RATE_OC" USING="-1" MAXVAL="0" MINVAL="0">6</Para>
<Para KEY="PAR_CO_CHRG_CR" USING="0" MAXVAL="0" MINVAL="0">6</Para>
<Para KEY="PAR_CO_PCIR" USING="0" MAXVAL="0" MINVAL="0">180</Para>
<Para KEY="PAR_CO_CHRG_SPD" USING="-1" MAXVAL="0" MINVAL="0">5.1</Para>
<Para KEY="PAR_CO_HOUR_COAL" USING="0" MAXVAL="0" MINVAL="0">80</Para>
<Para KEY="PAR_CO_CLOSED_LOOP" USING="0" MAXVAL="0" MINVAL="0">0</Para>
<Para KEY="PAR_CO_TAP_R_RANGE" USING="0" MAXVAL="1.32" MINVAL="1.30">1.30</Para>
<Para KEY="PAR_CO_TAP_AL2O3_RANGE" USING="0" MAXVAL="15.6" MINVAL="10.0">10.0</Para>
<Para KEY="PAR_CO_TAP_MGO_RANGE" USING="0" MAXVAL="15.6" MINVAL="10.0">5.0</Para>
<Para KEY="PAR_CO_RAW_SET_PATTERN" USING="0" MAXVAL="0" MINVAL="0">1</Para>
</Parameter>
</ChargeInfo>
上面是我平台生成的一段xml文件。我现在想解析这段xml,取出其中的数据,把数据赋给界面的控件。
初步思路就想把xml导入到dataset中去,用readxml等方法,但是没成功。大家给点意见吧。。(附上代码更好)
[解决办法]
以下代码已经经过测试:
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Xml.Serialization;using System.IO;namespace WindowsFormsApplication1{ public partial class Form1 : Form { string xmlString = @"<ChargeInfo> <Parameter> <Para KEY=""PAR_CO_OPTML_GOAL"" USING=""0"" MAXVAL=""0"" MINVAL=""0"">1</Para> <Para KEY=""PAR_CO_AIM_SI"" USING=""0"" MAXVAL=""0"" MINVAL=""0"">0.45</Para> <Para KEY=""PAR_CO_CHRG_CR"" USING=""-1"" MAXVAL=""0"" MINVAL=""0"">120</Para> <Para KEY=""PAR_CO_RATE_OC"" USING=""-1"" MAXVAL=""0"" MINVAL=""0"">6</Para> <Para KEY=""PAR_CO_CHRG_CR"" USING=""0"" MAXVAL=""0"" MINVAL=""0"">6</Para> <Para KEY=""PAR_CO_PCIR"" USING=""0"" MAXVAL=""0"" MINVAL=""0"">180</Para> <Para KEY=""PAR_CO_CHRG_SPD"" USING=""-1"" MAXVAL=""0"" MINVAL=""0"">5.1</Para> <Para KEY=""PAR_CO_HOUR_COAL"" USING=""0"" MAXVAL=""0"" MINVAL=""0"">80</Para> <Para KEY=""PAR_CO_CLOSED_LOOP"" USING=""0"" MAXVAL=""0"" MINVAL=""0"">0</Para> <Para KEY=""PAR_CO_TAP_R_RANGE"" USING=""0"" MAXVAL=""1.32"" MINVAL=""1.30"">1.30</Para> <Para KEY=""PAR_CO_TAP_AL2O3_RANGE"" USING=""0"" MAXVAL=""15.6"" MINVAL=""10.0"">10.0</Para> <Para KEY=""PAR_CO_TAP_MGO_RANGE"" USING=""0"" MAXVAL=""15.6"" MINVAL=""10.0"">5.0</Para> <Para KEY=""PAR_CO_RAW_SET_PATTERN"" USING=""0"" MAXVAL=""0"" MINVAL=""0"">1</Para> </Parameter></ChargeInfo>"; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { using(MemoryStream stream = new MemoryStream(System.Text.Encoding.ASCII.GetBytes(xmlString))) { XmlSerializer serilizer = new XmlSerializer(typeof(ChargeInfo)); ChargeInfo info = serilizer.Deserialize(stream) as ChargeInfo; } } } public class ChargeInfo { public List<Para> Parameter { get; set; } } public class Para { [XmlAttribute] public string KEY { get; set; } [XmlAttribute] public int USING { get; set; } [XmlAttribute] public double MAXVAL { get; set; } [XmlAttribute] public double MINVAL { get; set; } [XmlText] public string text { get; set; } }}
[解决办法]
1楼用的是XML序列化的方法
其实你就可以用XmlDocument进行解析,然后用xpath根据Key找到具体的Para
xpath你要不熟悉了,网上很多讲解的