读书人

dataSet生成xml有关问题?

发布时间: 2012-04-15 18:39:21 作者: rapoo

dataSet生成xml问题?在线等。

XML code
<BaseInfo>  <TransType>U</TransType>   <TransCode>01011001</TransCode>   <HeaderVervsion />   <SubTransCode />   <TransDate>2011-06-16</TransDate>   <TransTime>00:00:00</TransTime>   <TransSeq />   <Operator>001</Operator>   <TotalRowNum />   <RowNumStart />   <ResultCode>0</ResultCode>   <ResultMsg />   <CltSysCode>13</CltSysCode>   <ClinetIp />   <MachineNo />   <OperatorCom>86</OperatorCom>   <SvrSysCode />   <RouteKey1 />   <RouteKey2 />   <RouteKey3 />   <RegCertifId />   <TransEndDATE />   <TransEndTime />   <ValConstrLimit1 />   <ValConstrLimit2 />   <GranterNo />   <GranterPwd />   <BS_NO />   <EXT_KEY1 />   <EXT_KEY2 />   <EXT_KEY3 /> - <Input>- <Base>  <GUID>NCIA30888664887549x</GUID>   <ManageCom>86210000</ManageCom>   <PayMode />   <HighAmntFlag />   <HealthImpartFlag />   <OccpuImpartFlag />   <FinImpartFlag />   </Base>  </Input>  </BaseInfo>

以上是我xml的一个例子,我用的asp.net在后台用dataset分别装了以上是三个表,并且建立了关系,但是在导出xml的只能导出第一个表,大家帮我看看哪里出问题了。
C# code
string sqlBaseInfo = "select * from BaseInfo where BaseInfo_Id = 14";        dt = DBHelper.getDataTable(sqlBaseInfo, null);        dt.TableName = "BaseInfo";        ds.Tables.Add(dt.Copy());        //----------------------        string sqlInput = "select * from Input where BaseInfo_Id = 14";        DataTable dtInput = DBHelper.getDataTable(sqlInput, null);        dtInput.TableName = "Input";        string Input_Id = dtInput.Rows[0]["Input_Id"].ToString();        ds.Tables.Add(dtInput.Copy());                //---------------------        string sqlBase = "select * from Base where Input_Id = " + Input_Id + "";        dt = DBHelper.getDataTable(sqlBase, null);        dt.TableName = "Base";        ds.Tables.Add(dt.Copy());       DataRelation custOrderRelation = ds.Relations.Add("Input-Base", ds.Tables["Input"].Columns["Input_Id"], ds.Tables["Base"].Columns["Input_Id"]);       DataRelation custOrderRelation1 = ds.Relations.Add("BaseInfo-Input", ds.Tables["BaseInfo"].Columns["BaseInfo_Id"], ds.Tables["Input"].Columns["BaseInfo_Id"]);

这里是我后台的源码,
C# code
   public static bool CDataToXmlFile(DataTable dt, string xmlFilePath)    {        if ((dt != null) && (!string.IsNullOrEmpty(xmlFilePath)))        {           // string path = HttpContext.Current.Server.MapPath(xmlFilePath);            string path = xmlFilePath;            MemoryStream ms = null;            XmlTextWriter XmlWt = null;            try            {                ms = new MemoryStream();                //根据ms实例化XmlWt                XmlWt = new XmlTextWriter(ms, Encoding.Unicode);                //获取ds中的数据                dt.WriteXml(XmlWt);                int count = (int)ms.Length;                byte[] temp = new byte[count];                ms.Seek(0, SeekOrigin.Begin);                ms.Read(temp, 0, count);                //返回Unicode编码的文本                UnicodeEncoding ucode = new UnicodeEncoding();                //写文件                StreamWriter sw = new StreamWriter(path);                sw.WriteLine("<?xml version=" + '"' + "1.0" + '"' + " encoding=" + '"' + "utf-8" + '"' + "?>");                sw.WriteLine(ucode.GetString(temp).Trim());                sw.Close();                return true;            }            catch (System.Exception ex)            {                throw ex;            }            finally            {                //释放资源                if (XmlWt != null)                {                    XmlWt.Close();                    ms.Close();                    ms.Dispose();                }            }        }        else        {            return false;        }    } 

上面是生成xml的一个方法。

[解决办法]
public static bool CDataToXmlFile(DataTable[] dt, string xmlFilePath)
这块改成数组,下面

//获取ds中的数据
dt.WriteXml(XmlWt);
这块加个循环就可以了吧?
[解决办法]
因为你是用的dt啊,dt就是一张表而已

如果你想3张表一起出来,请换用dataset,把3张表都压入dataset,同时建立正确的关联关系

而后面采用dataset的WriteXml方法即可
[解决办法]
探讨

怎么说呢?
string url = Server.MapPath("xmlfile") + "\\0128201203080040_20120308154205.xml";
DataSet ds = XmlToData.CXmlFileToDataSet(url);
XmlServers.CDataToXmlFile(ds,@"\xmlf……

[解决办法]
探讨
XML code
<BaseInfo>
<TransType>U</TransType>
<TransCode>01011001</TransCode>
<HeaderVervsion />
<SubTransCode />
<TransDate>2011-06-16</TransDate>
<TransTime>00:00:00</TransTime>
……

读书人网 >asp.net

热点推荐