在实际项目中遇到一XML问题,用DataSet.GetXml()的方法只能返回字段不能为空的标签,如果再用此XML文件去UpData数据库,因为结构不一样,就会导致更新失败。求解决方案。
解决方案 »
- winform 问题
- 求一个socket通信的服务器端
- 为什么httpWebRequest post后还是原来的页面,提交不过去
- 怎样做到第1个子线程运行时主线程停止,而第2个线程仍然运行
- UI一个线程、文件拷贝一个线程,程序退出时想删除拷贝线程里未拷贝完的文件,但老报错。
- 问题:ReportViewer(RDLC报表,票据纸张)预览明明没问题,结果打印出来的单据方向变了,由纵向变成横向
- 有关Connection 属性尚未初始化 的问题
- 关于EventLog的错误
- 请教各位如何用线程来写代码?
- 请都高手:为什么在点击添加按钮以后,数据检索功能就不能用了?
- 100分求助:如何移动图片啊,请大家多多帮助我,附源代码!
- Graphics 闪烁问题
在更新Xml回数据库的时候:
DataSet ds = new DataSet();
ds.ReadXmlSchema("刚才读出来的XmlSchema");
ds.BeginInit();
ds.ReadXml("要更改的Xml");
ds.EndInit();
这样更新回去就没有问题了。
在VS中打开点右键"查看数据"时会不会出错?
附上准备更新的XML :<?xml version="1.0" encoding="gb2312" ?>
<NewDataSet xmlns="http://tempuri.org/tbOption1.xsd">
<tbOption>
<PKID>6</PKID>
<UVID>001</UVID>
<OptName>optCustomer_EN</OptName>
<OptVal>CompanyName</OptVal>
<Type>系统类</Type>
<Status>正常状态</Status>
<Re>公司名称_英文</Re>
<UpdateTime>2004-09-02T15:28:26.1400000+08:00</UpdateTime>
<Selected>false</Selected>
<MakeTime>2004-09-02T15:28:26.1400000+08:00</MakeTime>
</tbOption>
</NewDataSet>
ds.ReadXmlSchema("刚才读出来的XmlSchema");
ds.BeginInit();
ds.ReadXml("要更改的Xml");
ds.EndInit();
在这段代码中,如果XmlSchema的结构和包含数据的Xml结构不一致,会导致读取数据失败?
如果xml中的node在schema中没有就会引起错误,我没有实践过。我想问一下你的xml是怎么生成的?
是自己写的呢?还是通过DataSet.WriteXml来生成的。如果是通过DataSet.WriteXml来生成的话,
我的做法是:
先写DataSet.WriteSchemaXml("Shema文件名称");
用DataSet.WriteXml("文件名称", XmlWriteMode.DiffGram);
这样的话会帮DataSet里的数据的状态写入文件里。更新的时候先:
DataSet.ReadSchemaXml("Schema文件");
DataSet.ReadXml("文件名称", XmlReadMode.DiffGram);
这样你的DataSet里的数据就有状态了,再用DataSet去更新数据库的时候,它会去取DataSet.GetChanges(),如果没有状态的话,DataSet里的DataSet.GetChanges()是不存在的。你说的调试发现DataSet中没数据,也有可能就是这样原因引起的。