读书人

关于解析xml《《《《《《《,该怎么解决

发布时间: 2012-11-14 10:12:19 作者: rapoo

关于解析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等方法,但是没成功。大家给点意见吧。。(附上代码更好)

[解决办法]
以下代码已经经过测试:

C# code
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你要不熟悉了,网上很多讲解的

读书人网 >C#

热点推荐