如果直接查询显示的记录有多少,for xml显示的记录条数是多少?
这种问题我怎么没碰到过,ELEMENTS应该没有影响,那是确定数据是作为元素,还是作为属性。

解决方案 »

  1.   

    记录显示得不完整,明显的标签没有闭合.e.g.
      ...
      <Name>asdf</Na
      

  2.   

    通过url查询看看!
    那可能是假相!
      

  3.   

    coldljy(凤舞N天) :早点说清楚现象不就行了。你使用查询分析器查的吧,这个问题我估计多半是你的查询分析器的设置的问题,和数据无关。到〔工具〕-〔选项〕-〔结果〕,把每列最多字符数改成10000,再试试。祝你成功!
      

  4.   

    C#
    几条到几百条吧,每一条的大小就很难说了,因为有个Text字段StringBuilder sb = new StringBuilder();
    string strSQL ="SELECT * FROM MsgBoardV Where FatherID = 1 FOR xml auto,ELEMENTS";SqlConnection myCn = new SqlConnection(strConn);
    myCn.Open();
    SqlCommand myCmd = new SqlCommand(strSQL,myCn);
    XmlTextReader xtr = (XmlTextReader)myCmd.ExecuteXmlReader();
    sb.Append(xtr.GetRemainder().ReadToEnd());
      

  5.   

    对于C#,我不是太懂,不过我建议你把表中TEXT字段去掉后再测试一下,看是否正常来判断是不是TEXT字段造成的,另外,你能否统计一下字符截断后的长度,看是否是个固定值。
      

  6.   

    我建议你这么做
    第一种方法:
    创建 nwind 虚拟目录 在 Microsoft SQL Server 程序组中,单击"在 IIS 中配置 SQL XML 支持"。
    展开服务器,然后单击想要的 Web 站点。
    在"操作"菜单上指向"新建"子菜单,然后单击"虚拟目录"命令。新虚拟目录的属性页将显示在屏幕上。
    在"新的虚拟目录属性"对话框的"常规"选项卡上,输入虚拟目录的名称。对于本例,键入 nwind 和物理目录路径(例如 C:\Inetpub\Wwwroot\nwind,假设在 C:\Inetpub\Wwwroot 目录中已创建了 nwind 子目录)。或者可以使用"浏览"按钮选择目录。
    在"安全性"选项卡上,选择"SQL Server"并输入有效的 SQL Server 登录信息。当进入下一个选项卡时,它将请您确认刚才输入的密码。
    在"数据源"选项卡上,在"SQL Server"框中输入服务器的名称,例如 (local);如果在指定的计算机上安装了多个实例,则输入 SQL Server 2000 实例的名称(可选)。在"数据库"框中,输入 Northwind 作为默认数据库的名称。
    在"设置"选项卡上,选择"允许 URL 查询"、"允许模板查询"、"允许 XPath"和"允许 POST"选项。
    在"虚拟名称"选项卡上,单击"新建"按钮以创建模板类型的虚拟名称。 
    在"虚拟名称配置"对话框中:在"虚拟名称"框内输入 template(可以是用户指定的任意名称)。在"类型"列表中,选择"模板"。输入路径(例如,C:\Inetpub\Wwwroot\nwind\template,假设与虚拟目录相关联的物理目录下有一个子目录 template,但并不检查该目录是否存在)。单击"保存"按钮保存虚拟名称。 
    在"虚拟名称"选项卡上,单击"新建"按钮以创建架构类型的虚拟名称。 
    在"虚拟名称"框内输入 schema(可以是用户指定的任意名称)。在"类型"列表中,选择"架构"。输入路径(例如,C:\Inetpub\Wwwroot\nwind\schema,假设与虚拟目录相关联的物理目录下有一个子目录 schema)。单击"保存"按钮保存虚拟名称。 
    在"虚拟名称"选项卡上,单击"新建"按钮以创建模板和架构类型的虚拟名称。 
    在"虚拟名称"框内输入 dbobject(可以是用户指定的任意名称)。在"类型"列表中,选择 dbobject。单击"保存"按钮保存虚拟名称。 
    单击"确定"按钮保存设置。 
    这就创建了虚拟目录 nwind。默认情况下,使用该虚拟目录对 Northwind 数据库执行指定的查询。若要测试虚拟目录,请在浏览器中键入:http://<IISServer>/nwind?sql=SELECT * FROM Employees FOR XML AUTO&root=root 并按 ENTER 键。第二种方法:
    你通过ADO读取你上述方法得到的结果集,该结果集只有一列,你可以首先
    dim strXML
        strXML = "<root>"'objRs是我定义的返回结果集对象
    do while not objRs.EOF
        strXML = strXML & objRs.Fields.Item(0).value    objRs.MoveNext
    Loop    strXML = strXML & </root>
    '创建一个DOM对象
        dim objXml
        set objXml = Server.CreateObject("msxml2.DOMDocument")
            objXml.async = false
            
            objXml.loadXML strXML
            objXml.Save "C:\str.xml"
      

  7.   

    sql=SELECT * FROM Employees FOR XML AUTO&root=root 是最关键的 !root=root才可以创建合法的XML文档
      

  8.   

    bluepower2008(蓝色力量)说得没错,原先我也奇怪为什么数据老被截断,总是读出一截的文档出来。原来是设置问题。