dtXML is a DataTable which 1th column is an XML field.
String strXML=System.Text.UTF7Encoding.Default.GetString((byte[])dtXML.Rows[0][1]);

解决方案 »

  1.   

    for (int i = 0; i < dt.Rows.Count; i ++)
    {
       object[] valArray = dt.Rows[i].ItemArray;
       valArray[1] = Server.HtmlEncode(valArray[1].ToString()); 
       valArray[3] = Server.HtmlEncode(valArray[3].ToString()); 
       dt.Rows[i].ItemArray = valArray;
    }
      

  2.   

    to  qimini(循序渐进) : 
        用您的方法我仍然取不到的正确的XML字符串,返回的是一些很短的字母,中间有些空格。可能编码方式不正确,因为我的返回结果中包含了中文。to  wjohenw(天奇) :
        我还没看明白您的方法,不知道返回结果在哪里.用HtmlEncode方法难道forxml的结果是以html编码方式返回?我试试看。
      

  3.   

    附代码:
    select *  from  orderbill inner join orderItem on orderbill.pkid = orderitem.billid   where orderbill.pkid =1  for xml auto 
    结果如下: 
    XML_F52E2B61-18A1-11d1-B105-00805F49916B 
    -------------------------------------------------------------------- 
    <orderbill pkid="1" custom="张三" data="2000-08-01T00:00:00" re="东西"> 
    <orderItem pkid="1" product="电视" pcount="2" billid="1"/> 
    <orderItem pkid="2" product="冰箱" pcount="3" billid="1"/> 
    <orderItem pkid="3" product="椅子" pcount="34" billid="1"/> 
    </orderbill> (所影响的行数为 3 行)
      

  4.   

    利用OleDb对象,将数据库中全部表转换成XML文件http://xml.sz.luohuedu.net/xml/ShowDetail.asp?id=F3EB8683-DB3C-4460-ADB7-7C5C12348A11
      

  5.   

    to net_lover(孟子E章):
     利用OleDb对象,将数据库中全部表转换成XML文件,好虽好,但是其生成的xml往往不能符合我的要求,比如其主从表生成的都是带子节点的,而我想生成上面代码所示的带属性的XML,在SQLServer中生成的XML文档我还能利用视图生成结构更好的XML,而这些如果要在ADO.NET中去生成,要么写xslt,要么自己去用DOM转换,总之要费些劲。还有为什么forxml语句不能返回字符串呢?它在DataSet.Tables[0].Rows[0][0]内,但就是取不出来。
      

  6.   

    你所要返回的XML是要以属性显示还是以子节点的方式,你可以在DataColumn的ColumnMapping指定。
    我觉得你如果要生成比较复杂的XML文档时,还是使用模版或映射架构比较好。
      

  7.   

    use 
    System.Xml.XmlReader reader = cmd.ExecuteXmlReader();
      

  8.   

    thanks ,XmlReader读出来的结果仍然是字节数组,to  lihao9806(李昊)
    thanks, 我又学了新的东西。我准备按你的方法去做。