dtXML is a DataTable which 1th column is an XML field.
String strXML=System.Text.UTF7Encoding.Default.GetString((byte[])dtXML.Rows[0][1]);
String strXML=System.Text.UTF7Encoding.Default.GetString((byte[])dtXML.Rows[0][1]);
调试欢乐多
{
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;
}
用您的方法我仍然取不到的正确的XML字符串,返回的是一些很短的字母,中间有些空格。可能编码方式不正确,因为我的返回结果中包含了中文。to wjohenw(天奇) :
我还没看明白您的方法,不知道返回结果在哪里.用HtmlEncode方法难道forxml的结果是以html编码方式返回?我试试看。
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 行)
利用OleDb对象,将数据库中全部表转换成XML文件,好虽好,但是其生成的xml往往不能符合我的要求,比如其主从表生成的都是带子节点的,而我想生成上面代码所示的带属性的XML,在SQLServer中生成的XML文档我还能利用视图生成结构更好的XML,而这些如果要在ADO.NET中去生成,要么写xslt,要么自己去用DOM转换,总之要费些劲。还有为什么forxml语句不能返回字符串呢?它在DataSet.Tables[0].Rows[0][0]内,但就是取不出来。
我觉得你如果要生成比较复杂的XML文档时,还是使用模版或映射架构比较好。
System.Xml.XmlReader reader = cmd.ExecuteXmlReader();
thanks, 我又学了新的东西。我准备按你的方法去做。