none
关于XML操作类的一个问题请教 RRS feed

  • 问题

  • 如果我现在要求创建的XML格式如下
    <imageList>
      <imageModel>
        <image_id>1</image_id>
        <image_file_name>a</image_file_name>
        <image_type_name>a</image_type_name>
      </imageModel>
      <imageModel>
        <image_id>2</image_id>
        <image_file_name>b</image_file_name>
        <image_type_name>b</image_type_name>
      </imageModel>
    </imageList>


    请教下如果用后台代码来生成我需要的这种xml的格式的文件怎样写,
    对这个不是很熟悉,今天查找了一下资料··只有一种能达到xmlDoc.LoadXml("XML字符串格式");
    好像比较常用的还有另外一个格式一个一个的加载元素和节点,但是我试验了下没转过来··,

    如果有精通的大大的话能否能给示例代码,要求:按照我上面的xml格式创建,一共是3级的
    2009年10月26日 16:46

答案

  • XmlDocument dom = new XmlDocument();
             XmlNode root = dom.AppendChild(dom.CreateElement("imageList"));

             XmlNode imageModelNode = root.AppendChild(dom.CreateElement("imageModel"));
             imageModelNode.AppendChild(dom.CreateElement("image_id")).InnerText = "1";
             imageModelNode.AppendChild(dom.CreateElement("image_file_name")).InnerText = "a";
             imageModelNode.AppendChild(dom.CreateElement("image_file_type")).InnerText = "a";

             XmlNode imageModelNode2 = root.AppendChild(dom.CreateElement("imageModel"));
             imageModelNode2.AppendChild(dom.CreateElement("image_id")).InnerText = "2";
             imageModelNode2.AppendChild(dom.CreateElement("image_file_name")).InnerText = "b";
             imageModelNode2.AppendChild(dom.CreateElement("image_file_type")).InnerText = "b";

             Console.Write(dom.OuterXml);


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net
    • 已标记为答案 天驰 2009年10月27日 7:37
    2009年10月27日 2:14
    版主

全部回复

  • XmlDocument dom = new XmlDocument();
             XmlNode root = dom.AppendChild(dom.CreateElement("imageList"));

             XmlNode imageModelNode = root.AppendChild(dom.CreateElement("imageModel"));
             imageModelNode.AppendChild(dom.CreateElement("image_id")).InnerText = "1";
             imageModelNode.AppendChild(dom.CreateElement("image_file_name")).InnerText = "a";
             imageModelNode.AppendChild(dom.CreateElement("image_file_type")).InnerText = "a";

             XmlNode imageModelNode2 = root.AppendChild(dom.CreateElement("imageModel"));
             imageModelNode2.AppendChild(dom.CreateElement("image_id")).InnerText = "2";
             imageModelNode2.AppendChild(dom.CreateElement("image_file_name")).InnerText = "b";
             imageModelNode2.AppendChild(dom.CreateElement("image_file_type")).InnerText = "b";

             Console.Write(dom.OuterXml);


    Wenn ich dich hab’,gibt es nichts, was unerträglich ist.坚持不懈!http://blog.tanging.net
    • 已标记为答案 天驰 2009年10月27日 7:37
    2009年10月27日 2:14
    版主
  • 可用XML序列化方法得, 你需要的XML文件:
    static void Main(string[] args)
    {
       //定义对象
        ImageModel im1=new ImageModel(1,"a","a");
        ImageModel im2=new ImageModel(2,"b","b");
        ImageList il=new ImageList();
        il.Add(im1);
        il.Add(im2);

        //序列化
        FileStream fs=new FileStream("c:\test.xml",FileMode.OpenOrCreate);
        XmlSerializer xs=new XmlSerialiaer(typeof(ImageList));
        xs.Serialize(fs,il);
        fs.Close();
        fs.Dispose();

    }
    public class ImageModel
    {
       public int image_id;
       public string image_file_name;
       public string image_type_name;
       public int ImageModel()
       {
        }
       public int ImageModel(int id,string filename,string typename)
       {
           image_id=id;
           image_file_name=filename;
           image_type_name=typename;
       }
    }
    public class ImageList:System.Collections.ICollection
     {
      
      ArrayList al;
      public ImageList()

      { al=new ArrayList();}

      public int Add(ImageModel obj)
      {
       return al.Add(obj);
      }
      
      public ImageModel this[int index]
      {
       get { return (ImageModel)al[index]; }
       set { al[index] = value; }
      }
      #region ICollection 成员

      public void CopyTo(Array array, int index)
      {
       al.CopyTo(array, index);
      }

      public int Count
      {
       get { return al.Count; }
      }

      public bool IsSynchronized
      {
       get { return al.IsSynchronized; }
      }

      public object SyncRoot
      {
       get { return al.SyncRoot; }
      }

      #endregion

      #region IEnumerable 成员

      public System.Collections.IEnumerator GetEnumerator()
      {
       return al.GetEnumerator();
      }

      #endregion
     }


    Gao Peter
    2009年11月3日 8:15
  • 参考呵呵,谢谢
    2009年11月5日 0:44