如何解析这样的xml高手站出来帮下
<?xml version="1.0" encoding="utf-8"?>
<Config>
<Step StepName="Reg">
<Reg name="" Regpath="" values="">
</Step>
<Step StepName="FileMove">
<FileMove name="" path="">
<FileMove name="" path="">
</Step>
</Config>
我的大概这样的怎么解析呢,如果是能看懂我的意思修改xml也可以,只要满足需求,要解析成类对象,这能不能通过反序列化呢,还是手动解析的,怎么做,给出示例来谢谢,一定加分
------解决方案--------------------为指定的XML文件生成类并反序列化
------解决方案--------------------using System;
using System.Windows.Forms;
using System.Xml;
namespace xmlNode
{
   public partial class Form1 : Form
   {
       public Form1()
       {
           InitializeComponent();
       }
       private void button1_Click(object sender, EventArgs e)
       {
           XmlDocument xmldoc = new XmlDocument();
           xmldoc.Load("1.xml");
           XmlNode xn = xmldoc.SelectSingleNode("items/rtnCode");
           string s = xn.InnerText;
       }
   }
}
("items/rtnCode" 是节点位置
你还是直接解析吧
------解决方案--------------------读取xml的
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml.Schema;
using System.Collections.Generic;
using System.Xml;
namespace XmlAA
{
   public class ReadXml
   {
       public static void Main()
       {
           XmlReaderSettings setting = new XmlReaderSettings();
           //Insert Template.
           setting.Schemas.Add(null,@"..\..\po.xsd");
           //Validate.
           setting.ValidationType = ValidationType.Schema;
           //Does not handle errors, but displays an error message.
           setting.ValidationEventHandler += new ValidationEventHandler(EvenHandler);          
           XmlReader reader = XmlReader.Create(@"..\..\Vol.xml",setting);
           while (reader.Read())
           {
               if (reader.NodeType == XmlNodeType.Text)
               {
                   Console.WriteLine(reader.Value);
               }
           }
           Console.ReadLine();
       }
       public static void EvenHandler(object sender, ValidationEventArgs e)
       {
           //Error message
           Console.WriteLine("The method or operation is not implemented.");
       }
   }
}
------解决方案--------------------ok. 你是不是想把xml 解析成类?
那就要先将xml中的Step元素提取出来成字段封装成个对象
再做个类对象 只放List<Step> list=new List<Step>();
把现有的xml看作N个Step对象
接下来就是直接解析xml 装进对象
我个人觉得用循环嵌套循环更容易读取。我猜测你的配置文件是动态的 可增可删?
List<Step> list=new List<Step>();
XmlDataDocument xml=new XmlDataDocument();
xml.load("文件名");
XmlNode baseNode =xml.SelectSingleNode("/Config");
XmlNodeList listStep=baseNode.SelectNodes("Step");
for(int i=0;i<listStep.count;i++)
{
  Step s=new Step();
  s.StepName=listStep[i].Attributes[0].Value;
  XmlNodeList list1=baseNode.SelectNodes("Step/"+s.StepName+"");
  for(int j=0;j<list1.count;j++)
  {
     s.Name=list1[j].Attributes[0].Value;
     s.Path=list1[j].Attributes[1].Value;
  }
  list.add(s);
}
我觉得这个应该可以 你试试 有问题再讨论
------解决方案--------------------补充:List<Step> list=new List<Step>(); 这个作为个字段封装成 Config 类 的属性上面的就可以直接实例化