当前位置:编程学习 > C#/ASP.NET >>

向高手请教 关于 XMl的读写 以下这个方法和XMl文件 可以读 可以写 但是在Save的时候 就又被还原了 求解决

这个是
XMl文本
<?xml version="1.0" standalone="yes"?>
<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
    <xs:complexType>
      <xs:choice minOccurs="0" maxOccurs="unbounded">
        <xs:element name="Receive">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="ReceID" type="xs:string" minOccurs="0" />
              <xs:element name="ReceBranch" type="xs:string" minOccurs="0" />
              <xs:element name="ReceOwner" type="xs:string" minOccurs="0" />
              <xs:element name="ReceRoute" type="xs:string" minOccurs="0" />
              <xs:element name="ReceBusiness" type="xs:string" minOccurs="0" />
              <xs:element name="ReceProvider" type="xs:string" minOccurs="0" />
              <xs:element name="ReceShip" type="xs:string" minOccurs="0" />
              <xs:element name="ReceAmount" type="xs:float" minOccurs="0" />
              <xs:element name="ReceWeight" type="xs:float" minOccurs="0" />
              <xs:element name="ReceComeTime" type="xs:dateTime" minOccurs="0" />
              <xs:element name="ReceRemark" type="xs:string" minOccurs="0" />
              <xs:element name="ReceBranch1" type="xs:string" minOccurs="0" />
              <xs:element name="Creator" type="xs:string" minOccurs="0" />
              <xs:element name="CreateTime" type="xs:dateTime" minOccurs="0" />
              <xs:element name="ReceGroup" type="xs:string" minOccurs="0" />
              <xs:element name="ReceBranch2" type="xs:string" minOccurs="0" />
              <xs:element name="ReceMender" type="xs:string" minOccurs="0" />
              <xs:element name="ReceLast" type="xs:dateTime" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="Stock">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="StocID" type="xs:string" minOccurs="0" />
              <xs:element name="StocBranch" type="xs:string" minOccurs="0" />
              <xs:element name="StocOrdert" type="xs:string" minOccurs="0" />
              <xs:element name="StocFirst" type="xs:string" minOccurs="0" />
              <xs:element name="StocEnd" type="xs:string" minOccurs="0" />
              <xs:element name="StocCard" type="xs:string" minOccurs="0" />
              <xs:element name="StocYard" type="xs:string" minOccurs="0" />
              <xs:element name="StocArea" type="xs:string" minOccurs="0" />
              <xs:element name="StocBreed" type="xs:string" minOccurs="0" />
              <xs:element name="StocMatter" type="xs:string" minOccurs="0" />
              <xs:element name="StocSpec" type="xs:string" minOccurs="0" />
              <xs:element name="StocChar" type="xs:string" minOccurs="0" />
              <xs:element name="StocLength" type="xs:string" minOccurs="0" />
              <xs:element name="StocBundle" type="xs:string" minOccurs="0" />
              <xs:element name="StocBirth" type="xs:string" minOccurs="0" />
              <xs:element name="StocType" type="xs:string" minOccurs="0" />
              <xs:element name="StocRule" type="xs:string" minOccurs="0" />
              <xs:element name="StocQuality" type="xs:string" minOccurs="0" />
              <xs:element name="StocBundleC" type="xs:string" minOccurs="0" />
              <xs:element name="StocRefer" type="xs:string" minOccurs="0" />
              <xs:element name="StocGrass" type="xs:string" minOccurs="0" />
              <xs:element name="StocBirthD" type="xs:dateTime" minOccurs="0" />
              <xs:element name="StocMeasure" type="xs:string" minOccurs="0" />
              <xs:element name="StocAmountI" type="xs:double" minOccurs="0" />
              <xs:element name="StocWeightI" type="xs:double" minOccurs="0" />
              <xs:element name="StocRemark" type="xs:string" minOccurs="0" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:choice>
    </xs:complexType>
  </xs:element>
</xs:schema>

为什么能读 能写 但是 Save的时候又被还原了 是什么 请指教 谢谢 --------------------编程问答-------------------- 这个是读写方法
 try
            {
                string strXmlPath = System.AppDomain.CurrentDomain.BaseDirectory + "ReportTemplate\\" + "Receive.xml";
                //XmlDataDocument xDoc = new XmlDataDocument();
                XmlDocument xDoc = new XmlDocument();
                xDoc.Load(strXmlPath);
                //XmlNode xn = xDoc.SelectSingleNode("/NewDataSet");
                //XmlNodeList xnl = xn.ChildNodes;
                //foreach (XmlNode xn1 in xnl)
                //{
                //    if (xn1.Name == "Stock" || xn1.Name == "Receive")
                //        xn.RemoveChild(xn1);
                //}
                //XmlNodeList xnl = xDoc.SelectNodes("/NewDataSet/Stock");

                //foreach (XmlNode xn in xnl)
                //{
                //    if (xn.Name == "Stock")
                //        xn.ParentNode.RemoveChild(xn);

                //}
                DataSet ds = new DataSet();
                ds.ReadXmlSchema(strXmlPath);
                List<l_StockModel> listStock = new List<l_StockModel>();
                l_ReceiveModel modReceicve = new l_ReceiveModel();
                l_ReceiveBll bllReceive = new l_ReceiveBll(ConfigForm.GlobalBranchID);
                l_StockBll bllStock = new l_StockBll(ConfigForm.GlobalBranchID);
                modReceicve = bllReceive.GetModel("ReceID='" + ReceValue + "'");
                listStock = bllStock.GetModelList("*", "StocKind=0 and StocIn='" + ReceValue + "'");
                if (modReceicve != null)
                {
                    DataRow dr = ds.Tables["Receive"].NewRow();
                    dr["ReceID"] = modReceicve.ReceID;
                    dr["ReceBranch"] = ConfigForm.GetBranchName(modReceicve.ReceBranch);
                    dr["ReceOwner"] = ConfigForm.GetClientName(modReceicve.ReceOwner);
                    dr["ReceRoute"] = ConfigForm.GetOutRouteName(Convert.ToInt32(modReceicve.ReceRoute));
                    dr["ReceBusiness"] = modReceicve.ReceOperation;
                    dr["ReceProvider"] = ConfigForm.GetClientName(modReceicve.ReceProvider);
                    dr["ReceShip"] = modReceicve.ReceShip;
                    dr["ReceAmount"] = modReceicve.ReceAmountI;
                    dr["ReceWeight"] = modReceicve.ReceWeightI;
                    dr["ReceComeTime"] = modReceicve.ReceCome;
                    dr["ReceRemark"] = modReceicve.ReceRemark;
                    dr["ReceBranch1"] = ConfigForm.GetBranchName(modReceicve.ReceBranch1);
                    dr["Creator"] = ConfigForm.GetUserName(modReceicve.ReceCreator);
                    dr["CreateTime"] = modReceicve.ReceCreate;
                    dr["ReceGroup"] = ConfigForm.GetGroupName(modReceicve.ReceGroup);
                    dr["ReceBranch2"] = ConfigForm.GetBranchName(modReceicve.ReceBranch2);
                    dr["ReceMender"] = ConfigForm.GetUserName(modReceicve.ReceMender);
                    dr["ReceLast"] = modReceicve.ReceLast;
                    ds.Tables["Receive"].Rows.Add(dr);
                }
                if (listStock.Count > 0)
                {
                    for (int i = 0; i < listStock.Count; i++)
                    {
                        DataRow dr = ds.Tables["Stock"].NewRow();
                        dr["StocID"] = listStock[i].StocID;
                        dr["StocBranch"] = ConfigForm.GetBranchName(listStock[i].StocBranch);
                        dr["StocOrdert"] = listStock[i].StocOrder;
                        dr["StocFirst"] = listStock[i].StocFirst;
                        dr["StocEnd"] = listStock[i].StocEnd;
                        dr["StocCard"] = listStock[i].StocCard;
                        dr["StocYard"] = listStock[i].StocYard;
                        dr["StocArea"] = listStock[i].StocArea;
                        dr["StocBreed"] = ConfigForm.GetBreedName(listStock[i].StocBreed.ToString());
                        dr["StocMatter"] = ConfigForm.GetMatterName(listStock[i].StocMatter);
                        dr["StocSpec"] = listStock[i].StocSpec;
                        dr["StocChar"] = listStock[i].StocChar;
                        dr["StocLength"] = listStock[i].StocLength;
                        dr["StocBundle"] = listStock[i].StocBundle;
                        dr["StocBirth"] = listStock[i].StocBirth;
                        dr["StocType"] = listStock[i].StocType;
                        dr["StocRule"] = listStock[i].StocRule;
                        dr["StocQuality"] = listStock[i].StocQuality;
                        dr["StocBundleC"] = listStock[i].StocBundleC;
                        dr["StocRefer"] = listStock[i].StocRefer;
                        dr["StocGrass"] = listStock[i].StocGrass;
                        dr["StocBirthD"] = Convert.ToDateTime(listStock[i].StocBirthD);
                        dr["StocMeasure"] = listStock[i].StocMeasure;
                        dr["StocAmountI"] = listStock[i].StocAmountI;
                        dr["StocWeightI"] = listStock[i].StocWeightI;
                        dr["StocRemark"] = listStock[i].StocRemark1;
                        ds.Tables["Stock"].Rows.Add(dr);
                    }
                }
                ds.WriteXml(strXmlPath,XmlWriteMode.WriteSchema);
                //ds.WriteXmlSchema(
                //ds.WriteXmlSchema(strXmlPath);
                xDoc.Save(strXmlPath);
                
                //xDoc.Save("E:\\Logistics Manage\\Debug\\ReportTemplate\\Receive.xml");

                //System.Threading.Thread.Sleep(1000);
                //xDoc.Load(strXmlPath);
            }
            catch (Exception ex)
            {
                throw ex;
            }
--------------------编程问答-------------------- 为什么能读 能写 但是 Save的时候又被还原了 是什么 请指教 谢谢 --------------------编程问答-------------------- 难道没有高手了吗? 我不信!  高手 where  啊 Y --------------------编程问答-------------------- 设置断点跟踪一下 save的时候没有根据它的name来更新吧。
String xml = ""; // XML内容
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xml);
XmlNode node = xmlDoc.SelectSingleNode("aasman/makeannc/field[@name='zone_maps']");
if(node)
{
 node.Attributes["value"] = "新值"
} --------------------编程问答-------------------- http://blog.csdn.net/lovefootball/article/details/2785922 --------------------编程问答-------------------- 自己解决了! 哎···世态炎凉啊 --------------------编程问答-------------------- 楼主,主要是你代码太长,很多都不愿意看!这种事情,也只有自己调试了。。。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,