简单的我知道类似<books>
  <book bookname="c++语言编程" author="AAAA" Date="2009"></book>
  <book bookname="Java语言编程" author="BBBB" Date="2009"></book>
  <book bookname="C#语言编程" author="CCCC" Date="2009"></book>
</books>
这样,
但是我的实体类里面又List<string>类型,我想能不能直接把xml中的类似List的节点转化成List<string>的字段

<books>
  <book bookname="c++语言编程" author="AAAA" Date="2009">
  <KeyList>
     <Key>1</Key>
     <Key>2</Key>
     <Key>3</Key>
     <Key>4</Key>
  </KeyList>
  </book>
  <book bookname="Java语言编程" author="BBBB" Date="2009"></book>
  <book bookname="C#语言编程" author="CCCC" Date="2009"></book>
</books>能不能把KeyList转化入类型为List<string>的类字段里面?

解决方案 »

  1.   

    DataSet ds = new DataSet(); 
    ds.ReadXml(Server.MapPath("a.xml")); System.Xml.XmlDocument dom = new System.Xml.XmlDocument();
    dom.LoadXml(xml);
    foreach (System.Xml.XmlNode node in dom.ChildNodes)
    {   
         if(node.Name !="xml")
             Response.Write(GetNode(node));
    }  string GetNode(System.Xml.XmlNode node)
            {
                string str = node.InnerText;
                if (node.HasChildNodes)
                {
                    str = "";
                    foreach (System.Xml.XmlNode n in node.ChildNodes)
                    {
                        str += GetNodeText(n);
                    }
                }
                return str;
            }
      

  2.   

    http://topic.csdn.net/u/20090801/01/4b9e9842-151f-4f89-8342-ba6f82b2dd6c.html
      

  3.   

    楼上的说的用编程的方法,能不能换种,我觉得好像可以用XmlSerize这样的类去一次实现.不需要用编程方法.
      

  4.   

    只要定义一个有xml属性的类就应该行了,有没有这方面的代码
      

  5.   

    可以从XSD生成实体类。从XML分析XSD的工具很多,不过建议还是人工转,手动转的话变量类型不好控制。
      

  6.   

    可以用的, 如果直接用List<string>,序列化时生成的元素名称就是string, 指定一个ElementName就可以改成你想要名字,可以直接deserialize到List中[XmlType(TypeName="book")]
    public class Book
    {
    [XmlAttribute] public string bookName;
    [XmlAttribute] public string author;
    [XmlAttribute] public string Date; [XmlArrayItem(ElementName="Key")]
    public List<string> KeyList;
    }
      

  7.   

    还是没试成功
    <books> 
      <book bookname="c++语言编程" author="AAAA" Date="2009"> </book> 
      <book bookname="Java语言编程" author="BBBB" Date="2009"> </book> 
      <book bookname="C#语言编程" author="CCCC" Date="2009"> </book> 
    </books> 
    这样没问题,但是里面又有list貌似不行了啊
      

  8.   

    你的程序怎么写的,我试了可以啊XmlSerializer s = new XmlSerializer(typeof(Book[]), new XmlRootAttribute("books"));
    StringReader sr = new StringReader(xmlstring); // xmlstring换成你上贴里的xml字符串
    Book[] books = s.Deserialize(sr) as Book[];// test
    Literal1.Text = string.Join(",", books[0].KeyList.ToArray());
      

  9.   

     [System.Xml.Serialization.XmlElement("Phase")]
            public List<Phase> Phase
            {
                get { return phase; }
                set { phase = value; }
            }
    我直接用xmlelement的方式,貌似成功了。反正最后就这么解决,多谢大家的回答。