string xmlContent = @"<?xml version="1.0" encoding="utf-8" ?><Test></Test>";类似以上的xml内容(字符串)。怎么读进DataSet中
            Demo code part 1:             string xmlContent = @"<?xml version="1.0" encoding="utf-8" ?><Test></Test>";
            byte[] bytes = _cryptor.Encoding.GetBytes(xmlContent );            MemoryStream memoryStream = new MemoryStream();
            memoryStream.Read(bytes , 0, bytes .Length);            DataSet dataSet = new DataSet();
            dataSet.ReadXml(memoryStream );//这里老是提示,缺少根元素。            Demo code part 2:             string xmlContent = @"<?xml version="1.0" encoding="utf-8" ?><Test></Test>";            MemoryStream memoryStream = new MemoryStream();
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.InnerXml = xmlContent ;            xmlDoc.Save(memoryStream);            DataSet dataSet = new DataSet();
            dataSet.ReadXml(memoryStream );//这里老是提示,缺少根元素。我现在在做游戏中的一些数据存取。遇到这问题。但用文件方式的路径(path)来作参数,就没有问题。如:
            string path=string.Format("{0}{1}",Application.StartPath,@"\Test.xml");
            DataSet dataSet = new DataSet();
            dataSet.ReadXml(path);//这里又没问题了。那个Test.xml的内容与上面的一样。因为我对整个.xml文件的内容都加密了。Help~~~~~~~~~

解决方案 »

  1.   

    string xmlContent = @"<?xml version="1.0" encoding="utf-8" ?><Test></Test>";
    根元素 Test 应该不是这样写的吧。
      

  2.   

    XML读取到dataset
    ds.ReadXML
    遍历XML获取数据
    XmlDocument doc= new XmlDocument();
    doc.Load(xmlFile);
      

  3.   

    直接读取?怎么直接读取?读取的话也要先将xml文件load进来啊 然后在读
      

  4.   

    using    System;   
       using    System.Xml;   
       using    System.Xml.XPath;   
       using    System.Data;   
        
       class    ReadXML   
       {   
           public    static    void    Main()   
           {   
       string    sFile    =    "ReadXml.xml";   
        
       //method    1   
       XmlDocument    doc    =    new    XmlDocument();   
       doc.Load(sFile);   
       XmlNode    node    =    doc.DocumentElement["News"]["Content"];   
       Console.WriteLine(node.InnerText);   
        
       //method2   
       node    =    doc.SelectSingleNode("//Content");   
       Console.WriteLine(node.InnerText);   
        
       //similarly   
       node    =    doc.DocumentElement.SelectSingleNode("News/Content");   
       Console.WriteLine(node.InnerText);   
        
       //method    3   
       DataSet    ds    =    new    DataSet();   
       ds.ReadXml(sFile);   
       Console.WriteLine(ds.Tables[0].Rows[0]["Content"].ToString());   
        
       //method    4   
       XmlTextReader    reader    =    new    XmlTextReader(sFile);   
       while    (reader.Read())   
       {   
       if    (reader.Name    ==    "Content")   
       {   
       Console.WriteLine("***"    +    reader.ReadString());   
       break;   
       }   
       }   
        
       reader.Close();   
        
       //method    5   
        
       XPathDocument    xpdoc    =    new    XPathDocument(sFile);   
       XPathNavigator    xpnv    =    xpdoc.CreateNavigator();   
       xpnv.MoveToFirstChild();   
       xpnv.MoveToFirstChild();   
       xpnv.MoveToFirstChild();   
       xpnv.MoveToNext();xpnv.MoveToNext();xpnv.MoveToNext();   
       Console.WriteLine("pathnavigator:"    +    xpnv.Value);   
           }   
       }
      

  5.   

    XmlDocument node = new XmlDocument();
                string filename = ImagesPath + "Xml/AdminLink.xml";
                node.Load(filename);
                XmlNodeReader reader = new XmlNodeReader(node);
                DataSet set = new DataSet();
                set.ReadXml(reader);
                RepWebList.DataSource = set;
                RepWebList.DataBind();
                reader.Close();
      

  6.   

     DataSet set = new DataSet();
                set.ReadXml(reader);
    最方便咯
      

  7.   

     public void xmlToXsd()
            {
                string file = @"D:\a\FileClass.xml";
                string lastFile = @"D:\a\FileClass.xsd";
                DataSet ds = new DataSet();
                ds.ReadXml(file);
                System.IO.StreamWriter writer1 = new System.IO.StreamWriter(lastFile);
                ds.WriteXmlSchema(writer1);
                writer1.Close();
            }
      

  8.   

                XmlDocument doc = new XmlDocument();
                doc.Load("data.xml");
                XmlNodeList nodeList;
                XmlNode root = doc.DocumentElement;
                nodeList = root.SelectNodes("descendant::node");
                foreach (XmlNode node in nodeList)
                {
                   //将这个点的信息写入到dataset中去
                }
      

  9.   

    Oh my god...大家还没理解我说的意思,我的意思不是直接对.xml文件。注意:不是读文件。认真的再看看我的题目。是读InnerXML的值。怎么读这个InnerXML的值读进DataSet,而且要更注意的是,该值全都是字符串而已。最后再得重复一下,不是读文件,读文件我也会DataSet有ReadXML(string fileName)XmlDocument也有Load(string fileName),但我不要这些,我要的是怎么读字符串(InnerXML)的值读进DataSet.
      

  10.   

    1. 首先不是_cryptor.Encoding.GetBytes,应该是_cryptor.UTF8.GetBytes
    2. Dataset读取XML流要先读取其架构或者自己设置架构,然后把流重置到开始位置。你加上那三行应该就可以了。
    string xmlContent = @"<?xml version="1.0" encoding="utf-8" ?><Test></Test>";
                byte[] bytes = _cryptor.Encoding.GetBytes(xmlContent );            MemoryStream memoryStream = new MemoryStream();
                memoryStream.Read(bytes , 0, bytes .Length);
                DataSet dataSet = new DataSet();
                memoryStream.Seek(0, SeekOrigin.Begin);
                dataSet.ReadXmlSchema(memoryStream);
                memoryStream.Seek(0, SeekOrigin.Begin);

                dataSet.ReadXml(memoryStream );
      

  11.   

    缺少根元素
      还是XML的问题呀~
      

  12.   

    遇到和LZ一样的问题 最后用XmlDocument  和 MemoryStream 解决了。仅供参考            string strRet = "<?xml version=\"1.0\" standalone=\"yes\"?><DsResultData><ReturnInfo><ReturnCode>0</ReturnCode><ReturnMessage>Success</ReturnMessage></ReturnInfo></DsResultData>";
                DataSet dsRet = new DataSet();
                XmlDocument doc = new XmlDocument();
                MemoryStream mStream = new MemoryStream();
                doc.LoadXml(strRet);
                doc.Save(mStream);
                mStream.Seek(0, SeekOrigin.Begin);
                dsRet.ReadXml(mStream);