http://blog.csdn.net/lizanhong/archive/2004/06/23/24374.aspx

解决方案 »

  1.   

    贴个参考using System;
    using System.Data;
    using System.Xml;
    using System.IO;namespace paladin
    {
    /// <summary>
    /// ToXml 的摘要说明。
    /// Author:paladin。
    /// Last Update Date: 2004-6-14 16:00
    /// YuanDa Corporation, 2003-2010 All Rights Reserved
    /// 
    /// 一、使用MSXML(microsoft的xml分析器)。MSXML是一个基于com的组件。
    /// DOMDocument40 doc=new DOMDocument40();
    /// doc.load("books.xml");
    /// 二、使用net framework自带的xml类。xmlreader、xmlwriter。
    /// xmlTextReader、xmlTextWriter、xmlNodeReader、XmlValidatingReader。
    /// 三、使用DOM(文档对象模型)
    /// xmlDocument doc=new xnlDocument();
    /// xmlDocument与xmlreader、xmlwriter不同,它具有读写功能、可以随机访问DOM树。类似MSXML的DOM执行方式。
    /// 四、使用Xpath和Xslt。
    /// Xpath是XML的查询语言。XSlt是把基本文档转换为结构或类型不同的另一个文档。
    /// 五、XML和ADO.NET
    /// XML和ADO.NET的互相转化。
    /// 访问xml文件可以用XmlTextWriter、XmlTextReader 来访问。也可以利用DOM文档模板来访问。
    /// 读取xml数据可以利用XmlTextReader 、DOM或者是ADO.net
    /// </summary>
    public class ToXml
    {
    public ToXml()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    } /// <summary>
    /// 创建一个xml文件,包括根元素。
    /// </summary>
    /// <param name="file"></param>
    /// <param name="rootElement"></param>
    public void CreateXml(string file,string rootElement)
    {
    XmlDocument doc=new XmlDocument();
    //创建一个新的XmlDeclaration,版本1.0,编码(默认utf8)和standalone标志
    XmlDeclaration newDec=doc.CreateXmlDeclaration("1.0",null,null);
    doc.AppendChild(newDec);
    //创建一个根元素
    XmlElement newRoot=doc.CreateElement(rootElement);
    doc.AppendChild(newRoot);
    //xml文件写入到磁盘
    doc.Save(file);
    }
    /// <summary>
    /// 创建一个xml文件,xml文件的内容在xmlStr中已经构造好了。
    /// </summary>
    /// <param name="xmlStr"></param>
    public void CreateXml(string xmlStr)
    {
    XmlDocument  doc = new XmlDocument();
    doc.LoadXml(xmlStr);
    doc.Save(System.Web.HttpContext.Current.Server.MapPath("/newengnieer/includes/categoryTree.xml")  ) ; 
    }

    /// <summary>
    /// 添加一个xml元素,包括该元素的子元素和属性。
    /// </summary>
    /// <param name="file"></param>
    public void InsertXml(string file)
    {
    XmlDocument doc=new XmlDocument();
    doc.Load(file);
    //创建一个新元素
    XmlElement newBook=doc.CreateElement("book");
    //创建该元素的属性
    newBook.SetAttribute("aa","ss");
    newBook.SetAttribute("ss","dd");
    //创建该元素的子元素
    XmlElement newtitle=doc.CreateElement("title");
    newtitle.InnerText="sdfdf";
    newBook.AppendChild(newtitle);
    //创建该元素的子元素
    XmlElement newauthor=doc.CreateElement("author");
    newBook.AppendChild(newauthor);
    //
    doc.DocumentElement.AppendChild(newBook);
    //xml文件写入到磁盘
    XmlTextWriter tr=new XmlTextWriter(file,null);
    tr.Formatting=Formatting.Indented;
    doc.WriteContentTo(tr);
    tr.Close();
    } /// <summary>
    /// 使用XmlTextWriter写入xml
    /// </summary>
    private void writeToXml(string fileName)
    {
    //xml的文件路径
    // string fileName=MapPath("ucTabBarConfig.xml");
    XmlTextWriter xmltw=new XmlTextWriter(fileName,System.Text.Encoding.Unicode);
    xmltw.Formatting=Formatting.Indented;
    //开始写入xml文档
    xmltw.WriteStartDocument();
    //开始写入文档元素
    xmltw.WriteStartElement("tabBar1");
    //开始写入元素‘tabBar1’下的文档元素‘tab1’
    xmltw.WriteStartElement("tab1");
    xmltw.WriteElementString("text","违法行为立案");
    xmltw.WriteElementString("href","");
    xmltw.WriteEndElement();
    //元素写入完毕
    xmltw.WriteStartElement("tab2");
    xmltw.WriteElementString("text","行政处罚意见");
    xmltw.WriteElementString("href","");
    xmltw.WriteEndElement();
    //
    xmltw.WriteStartElement("tab3");
    xmltw.WriteElementString("text","额外");
    xmltw.WriteElementString("href","");
    xmltw.WriteEndElement();
    //
    xmltw.WriteStartElement("tab4");
    xmltw.WriteElementString("text","行政处罚收费");
    xmltw.WriteElementString("href","");
    xmltw.WriteEndElement();
    //元素写入完毕
    xmltw.WriteEndElement();
    //文档写入完毕
    xmltw.WriteEndDocument();
    //
    xmltw.Flush();
    xmltw.Close();
    } /// <summary>
    /// 利用xmlTextReader读取xml的数据
    /// </summary>
    /// <param name="fileName"></param>
    /// <returns></returns>
    private string readFromXml(string fileName)
    {
    //xml的文件路径
    // string fileName=MapPath("ucTabBarConfig.xml");
    XmlTextReader xmltr=new XmlTextReader(fileName);
    //
    string returnValue="";
    while(xmltr.Read())
    {
    if(xmltr.NodeType==XmlNodeType.Text)
    {
    returnValue=returnValue+xmltr.Value;
    }
    }
    return returnValue;
    } /// <summary>
    /// 利用Ado.net读取xml的数据
    /// </summary>
    /// <returns></returns>
    private DataView readDataFromXml(string fileName)
    {
    DataSet ds=new DataSet();
    ds.ReadXml(fileName);
    return ds.Tables[0].DefaultView;
    } /// <summary>
    /// 根据strSearch条件来查找
    /// </summary>
    /// <param name="file"></param>
    /// <param name="strSearch"></param>
    /// <returns></returns>
    public string searchXml(string file,string strSearch)
    {
    string returnVal="";
    XmlDocument doc=new XmlDocument();
    doc.Load(file);
    //查找 <root>
    // <book name="文明">
    // <title>dfdf</title>
    // </book>
    // </root>
    //查找元素book的子元素的innerText“sdfdf”项
    //string strSearch="root/book[title='sdfdf']";
    //查找元素book的属性name为“文明”项
    //string strSearch="root/book[@name='文明']";
    XmlNode serchNode=doc.SelectSingleNode(strSearch);
    if(serchNode!=null)
    {
    returnVal=serchNode.InnerText;
    }
    return returnVal;
    } /// <summary>
    /// 根据TagName来查找
    /// </summary>
    /// <param name="file"></param>
    /// <param name="TagName"></param>
    public void searchXmlByTag(string file,string TagName)
    {
    XmlDocument doc=new XmlDocument();
    doc.Load(file);
    //查找<title></title>
    XmlNodeList nodeList=doc.GetElementsByTagName("title");
    foreach(XmlNode node in nodeList)
    {
    // ListBox1.Items.Add(node.InnerText);
    }
    }
    }
    }
      

  2.   

    http://dev.csdn.net/Develop/article/28%5C28976.shtm
    http://tech.ccidnet.com/pub/article/c1137_a11928_p1.html
      

  3.   

    http://community.csdn.net/Expert/topic/3091/3091343.xml?temp=.5088159
      

  4.   

    不要用数组了,向ArrayList中add,
    ArrayList alist = new ArrayList();foreach(XmlNode node in nodeList)
    {
       alist.add(string);
    }
      

  5.   

    ArrayList我也会啊,可是上头要求返回
    {{book1,Title,s,Author},{book2},{book3,Title,Author,price}}
    的形式啊
      

  6.   

    前几天好象有人问过这样的问题,不知道是不是楼主!!!
    --------------------------------------------------------
    private void button1_Click(object sender, System.EventArgs e)

          string[][] s=readnodename(@"e:\123.xml","library");
            
    for(int i=0;i<s.Length;i++)
    {
    for(int j=0;j<s[i].Length;j++)
    Console.Write(s[i][j]+",");
    Console.WriteLine("");
    }
    }public string[][] readnodename(string FileName,string NodeName)
    {
    XmlDocument doc=new XmlDocument();
    doc.Load(FileName);
             
    string sXPath="//"+NodeName+"/*";
    XmlNodeList nodes=doc.DocumentElement.SelectNodes(sXPath); string[][] sRet=new string[nodes.Count][]; for(int i=0;i<nodes.Count;i++)
    {                if(nodes[i].HasChildNodes && nodes[i].ChildNodes[0].NodeType!=XmlNodeType.Text)
    {
    int iAll=nodes[i].ChildNodes.Count+1;
    sRet[i]=new string[iAll];                   for(int j=0;j<nodes[i].ChildNodes.Count;j++)
    {
    sRet[i][j+1]=nodes[i].ChildNodes[j].Name;
    }
    }
    else
    sRet[i]=new string[1]; sRet[i][0]=nodes[i].Name;
    } return sRet;

    ----------------------------
    显示结果:
    book1,Title,s,Author,
    book2,
    book3,Title,Author,price,
      

  7.   

    先定义结构体,
    public struct LIBSTRUCT
    {
    public string book1;
    public string title;
    ..
                       ..
    }public LIBSTRUCT a(参数,参数)
    {
    LIBSTRUCT abc = new LIBSTRUCT();
    return abc;
    }
      

  8.   

    你定义一个结构体
    public struct book
    {
    public string title;
    public string s;
    public string Author;
                      public string price;
    }在定义一个函数
    public ArrayList booklist(参数...)
             {
                ArrayList blist = new ArrayList();
                book b = new book();
                //将一个book的属性存到结构体 b中
                ..
                ..            //再把结构体放到arraylist中
                blist.add(b);
             }
    得到的ArrayList,包括了三本书的属性内容,其内容为三个结构体,在读取时,需要(book)blist