在项目中建立一个 example.xml文件数据库里有Document字段是xml类型的如何将数据库中一条记录的Document字段值 加入到example.xml文件中谢谢大家!!

解决方案 »

  1.   

    首先调用DataSet.ReadXml修改以后再通过dataSet.WriteXml写回example.xml文件
      

  2.   

    如果数据库里的数据就是xml类型的你就先做个读取的操作
    XmlDocument   xmlDoc=new   XmlDocument();   
            xmlDoc.Load("example.xml");   
            XmlNode   root = xmlDoc.SelectSingleNode(节点名);//查找你需要的节点
             foreach (XmlNode node in root)
            {
                ...你挨个从数据库的纪录节点中取值就行
              }
    这是插入节点的操作       
            XmlDocument   xmlDoc=new   XmlDocument();   
            xmlDoc.Load("example.xml");   
            XmlNode   root=xmlDoc.SelectSingleNode(节点名);//查找你要插入的节点 
            XmlElement   xe1=xmlDoc.CreateElement(字节点名);
             xe1.SetAttribute(名称,值);
            xmlDoc.Save("example.xml");  
      

  3.   

    既然数据源是存在数据库中,那么强烈建议楼主应该使用SQLXML来解决该问题。
    通过SqlCommand.ExecuteXmlReader 方法返回XmlReader对象。拿到了XmlReader对象,楼主想怎么处理就怎么处理。而这种方式是效率最高而且是最省事也是最合理的。
    关于SQL Server的Xml功能实例我写了两篇文章可以参考这里,其中一篇针对SQL Sql 2005的Xml字段。使用Microsoft SQL Server 2000的XML查询
    http://blog.csdn.net/zhzuo/archive/2005/06/28/406290.aspx
    使用SQL Server 2005 FOR XML嵌套查询
    http://blog.csdn.net/zhzuo/archive/2008/06/08/2525447.aspx
      

  4.   

    不好意思 我是个新手 针对上面的回复 还是有些问题这里边我要从数据库里提取出一个XML类型的字段 即document, 我要把这些值追加到项目中的a.xml文件中,其中a.xml文件,除了有版本号信息之类的文件头,没有任何其他数据。那么现在我用sql提取出document字段的值   select document from table1 where ID=1 这个应该怎么用。接下来的代码怎么写,大家能给点例子吗 谢谢!!
      

  5.   

    可能是我没有描述清楚吧  我是想把一条记录(如ID=1)里的xml类型的Document字段的所有内容都追加到项目的a.xml文件 a.xml是我刚建立,里面没内容。谁能给我一些例子啊  具体该怎么写  谢谢!!其实这个逻辑很简单吧,就是从数据库取数据,加入到项目中xml文件中,只不过我不是从机器上的某一个xml文件取值,而是把数据库xml类型的字段当作数据源罢了   
      

  6.   

    你的a.xml是空文件,还是包含了根元素的文件,能够列出来。
      

  7.   

    示例数据库为SQL Server 2005中的AdventureWorks,看了下面的代码如果还有问题请在我的Blog上留言//读取SQL 中 Xml类型字段保存到Xml文件(Xml字段包含完整的xml内容)
    private static void GetXmlDocumentDataFromSQL() 
    {
        string s = "Data Source=127.0.0.1;Initial Catalog=AdventureWorks;Integrated Security=True";
        SqlConnection conn = new SqlConnection(s);
        string sql = "SELECT AdditionalContactInfo FROM Person.Contact WHERE ContactID = 1";
        SqlCommand command = new SqlCommand(sql, conn);
        try
        {
            conn.Open();
            XmlReader reader = command.ExecuteXmlReader();
            try
            {
                XmlDocument doc = new XmlDocument();
                doc.Load(reader);
                doc.Save(@"c:\sqlxmldata.xml");
            }
            finally 
            {
                reader.Close();
            }                
        }
        finally 
        {
            conn.Close();
        }
        
        
    }////读取SQL 中 Xml类型字段保存到Xml文件(Xml字段包含Xml片段,即有多个根节点)
    private static void GetXmlBlockDataFromSQL()
    {
        string s = "Data Source=127.0.0.1;Initial Catalog=AdventureWorks;Integrated Security=True";
        SqlConnection conn = new SqlConnection(s);
        string sql = "SELECT XmlEvent FROM DatabaseLog WHERE DatabaseLogID = 1;";
        SqlCommand command = new SqlCommand(sql, conn);
        try
        {
            conn.Open();                
            XmlReader reader = command.ExecuteXmlReader();
            try 
            {
                XmlDocument doc = new XmlDocument();
                XmlElement rootNode = doc.CreateElement("Root");//创建一个根节点用来包含xml片段
                doc.AppendChild(rootNode);
                XmlNode node = doc.ReadNode(reader);
                while (node != null)//循环处理xml片段
                {
                    rootNode.AppendChild(node);
                    node = doc.ReadNode(reader);
                }
                doc.Save(@"c:\sqlxmldata1.xml");
            }
            finally
            {
                reader.Close();
            } 
        }
        finally
        {
            conn.Close();
        }
    }
      

  8.   

    如果一下子取出两条document字段 也就是两个xml文件 要将他们的值都存放在项目的一个xml文件中,应该怎么做呢 
    能用while(Read())吗
    是不是要先创建一个根节点 
    这个代码应该怎么写呀  谢谢!!
      

  9.   

                     SqlConnection Conn = new SqlConnection(myConn);
                     sqlstr = "select Document from dbo.Logs where EventID='" + EventID + "'";
                     SqlCommand command = new SqlCommand(sqlstr, Conn);
                     try
                     {
                         Conn.Open();
                         XmlReader reader = command.ExecuteXmlReader();
                         try
                         {
                             XmlDocument doc = new XmlDocument();
                             XmlElement rootNode = doc.CreateElement("Root");
                             doc.AppendChild(rootNode);
                             XmlNode node = doc.ReadNode(reader);
                             while (node != null)
                             {
                                 rootNode.AppendChild(node);
                                 node = doc.ReadNode(reader);
                             }
                             doc.Save(@"c:\combineXml.xml");如果我这样写的话 combimeXml.xml中只有第一个document字段的值,怎么把第二个document的值也加入到xml的root根节点下呀 谢谢!