Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 基于orderid保存单独的xml文件_C#_Xml_Xml Generation - Fatal编程技术网

C# 基于orderid保存单独的xml文件

C# 基于orderid保存单独的xml文件,c#,xml,xml-generation,C#,Xml,Xml Generation,您好,所有当前我已将所有xml文件保存在一个文件中。但我需要另存一个文件。你能帮我一下吗 当前代码:- System.Data.DataTable checkFile = new System.Data.DataTable(); sql = "sql"; DBCon clsDB = new DBCon(SAPCompanySettings.MSSQLConnectionString);

您好,所有当前我已将所有xml文件保存在一个文件中。但我需要另存一个文件。你能帮我一下吗

当前代码:-

 System.Data.DataTable checkFile = new System.Data.DataTable();
                sql = "sql";
                DBCon clsDB = new DBCon(SAPCompanySettings.MSSQLConnectionString);
                clsDB.Execute(sql, ref checkFile);                
            var stringwriter = new StringWriter();
            using (var xmlWriter = XmlWriter.Create(stringwriter, new XmlWriterSettings { Indent = true }))
            {
                xmlWriter.WriteStartDocument();
                xmlWriter.WriteStartElement("Root");
                var groups = checkFile.AsEnumerable().GroupBy(x => new { DocNum = x.Field<int>("orderid"), Type = x.Field<string>("Type"), Status = x.Field<string>("Status"), productno = x.Field<string>("productno"), ProductDescription = x.Field<string>("ProductDescription"), uom = x.Field<string>("uom"), customer = x.Field<string>("customer"), remark = x.Field<string>("remark"), U_JobNumber = x.Field<string>("U_JobNumber"), U_SalesPerson = x.Field<string>("U_SalesPerson"), U_JobType = x.Field<string>("U_JobType"), PlannedQty = x.Field<decimal>("PlannedQty"), OriginNum = x.Field<int?>("OriginNum"), orderdate = x.Field<DateTime>("orderdate"), duedate = x.Field<DateTime>("duedate") });
                foreach (var group in groups)
                {
                    xmlWriter.WriteStartElement("productionorder");
                    xmlWriter.WriteAttributeString("orderid", group.Key.DocNum.ToString());
                    xmlWriter.WriteElementString("type", group.Key.Type);    
                        xmlWriter.WriteElementString("status", group.Key.Status);             
                        xmlWriter.WriteElementString("productno", group.Key.productno);                              xmlWriter.WriteElementString("ProductDescription", group.Key.ProductDescription);                       
                      xmlWriter.WriteElementString("PlannedQty",group.Key.PlannedQty.ToString());                                              
                        xmlWriter.WriteElementString("uom", group.Key.uom);
                        xmlWriter.WriteElementString("salesorder", group.Key.OriginNum.ToString());                                                          xmlWriter.WriteElementString("customer", group.Key.customer);                        
                        xmlWriter.WriteElementString("Remarks", group.Key.remark);
                        xmlWriter.WriteStartElement("date");
                        xmlWriter.WriteElementString("orderdate", group.Key.orderdate.ToString());
                        xmlWriter.WriteElementString("duedate", group.Key.duedate.ToString());
                        xmlWriter.WriteEndElement();
                        xmlWriter.WriteElementString("jobdescription", group.Key.U_JobNumber);                 
                        xmlWriter.WriteElementString("salesperson", group.Key.U_SalesPerson);
                    xmlWriter.WriteElementString("jobtype", group.Key.U_JobType);
                    foreach (DataRow row in group)
                    {
                        xmlWriter.WriteStartElement("Components");
                        xmlWriter.WriteElementString("itemno", row.Field<string>("itemno"));
                        xmlWriter.WriteEndElement();
                    }
                    xmlWriter.WriteEndElement();
                    var sql2 = "update IS_XML_generated='Y' from OWOR where DocNum=group.Key.DocNum";
                    clsDB.Execute(sql2);
                }
                xmlWriter.WriteEndElement();
            }
            var xml = stringwriter.ToString();
            XmlDocument docSave = new XmlDocument();
            docSave.LoadXml(stringwriter.ToString());
            docSave.Save(System.IO.Path.Combine(@"C:\DEMO PSL\DOXMLFILE", "Filename.xml"));
System.Data.DataTable checkFile=new System.Data.DataTable();
sql=“sql”;
DBCon clsDB=新的DBCon(SAPCompanySettings.MSSQLConnectionString);
执行(sql,ref checkFile);
var stringwriter=新的stringwriter();
使用(var xmlWriter=xmlWriter.Create(stringwriter,新的XmlWriterSettings{Indent=true}))
{
xmlWriter.WriteStartDocument();
writeStarteElement(“根”);
var groups=checkFile.AsEnumerable().GroupBy(x=>new{DocNum=x.Field(“orderid”)、Type=x.Field(“Type”)、Status=x.Field(“Status”)、productno=x.Field(“productno”)、ProductDescription=x.Field(“ProductDescription”)、uom=x.Field(“customer”)、remark=x.Field(“备注”)、U\U JobNumber=x.Field(“U\U JobNumber”),U_SalesPerson=x.Field(“U_SalesPerson”)、U_JobType=x.Field(“U_JobType”)、PlannedQty=x.Field(“PlannedQty”)、OriginNum=x.Field(“OriginNum”)、orderdate=x.Field(“orderdate”)、duedate=x.Field(“duedate”)};
foreach(组中的var组)
{
writeStart元素(“productionorder”);
WriteAttributeString(“orderid”,group.Key.DocNum.ToString());
WriteElementString(“type”,group.Key.type);
WriteElementString(“status”,group.Key.status);
xmlWriter.WriteElementString(“productno”,group.Key.productno);xmlWriter.WriteElementString(“ProductDescription”,group.Key.ProductDescription);
WriteElementString(“PlannedQty”,group.Key.PlannedQty.ToString());
WriteElementString(“uom”,group.Key.uom);
xmlWriter.WriteElementString(“salesorder”,group.Key.OriginNum.ToString());xmlWriter.WriteElementString(“customer”,group.Key.customer);
WriteElementString(“备注”,group.Key.remark);
xmlWriter.WriteStarteElement(“日期”);
WriteElementString(“orderdate”,group.Key.orderdate.ToString());
WriteElementString(“duedate”,group.Key.duedate.ToString());
xmlWriter.WriteEndElement();
WriteElementString(“作业描述”,group.Key.U_作业编号);
WriteElementString(“salesperson”,group.Key.U_saleperson);
WriteElementString(“jobtype”,group.Key.U_jobtype);
foreach(组中的数据行)
{
writeStart元素(“组件”);
WriteElementString(“itemno”,row.Field(“itemno”);
xmlWriter.WriteEndElement();
}
xmlWriter.WriteEndElement();
var sql2=“更新是从OWOR生成的,其中DocNum=group.Key.DocNum”;
clsDB.Execute(sql2);
}
xmlWriter.WriteEndElement();
}
var xml=stringwriter.ToString();
XmlDocument docSave=新的XmlDocument();
加载XML(stringwriter.ToString());
保存(System.IO.Path.Combine(@“C:\DEMO PSL\DOXMLFILE”,“Filename.xml”);
电流输出:-

xml:-两个顺序保存在同一个文件中

<?xml version="1.0" encoding="utf-16"?>
<Root>
  <productionorder orderid="1">
  ...................
  </productionorder>
  <productionorder orderid="2">
    ...............
  </productionorder>
</Root>

...................
...............
但预期输出:-我需要保存不同的文件 1.xml:-


..............
2.xml:-

<?xml version="1.0" encoding="utf-16"?>
<Root>
  <productionorder orderid="2">
    ............
  </productionorder>
</Root>

............

我交换了using循环和foreach循环。我还修改了文件名,使每个文件名都是唯一的

             System.Data.DataTable checkFile = new System.Data.DataTable();
                sql = "sql";
                DBCon clsDB = new DBCon(SAPCompanySettings.MSSQLConnectionString);
                clsDB.Execute(sql, ref checkFile);                

            var groups = checkFile.AsEnumerable().GroupBy(x => new { DocNum = x.Field<int>("orderid"), Type = x.Field<string>("Type"), Status = x.Field<string>("Status"), productno = x.Field<string>("productno"), ProductDescription = x.Field<string>("ProductDescription"), uom = x.Field<string>("uom"), customer = x.Field<string>("customer"), remark = x.Field<string>("remark"), U_JobNumber = x.Field<string>("U_JobNumber"), U_SalesPerson = x.Field<string>("U_SalesPerson"), U_JobType = x.Field<string>("U_JobType"), PlannedQty = x.Field<decimal>("PlannedQty"), OriginNum = x.Field<int?>("OriginNum"), orderdate = x.Field<DateTime>("orderdate"), duedate = x.Field<DateTime>("duedate") });
            int count = 1;
            foreach (var group in groups)
            {
                var stringwriter = new StringWriter();
                using (var xmlWriter = XmlWriter.Create(stringwriter, new XmlWriterSettings { Indent = true }))
                {
                    xmlWriter.WriteStartDocument();
                    xmlWriter.WriteStartElement("Root");
                    xmlWriter.WriteStartElement("productionorder");
                    xmlWriter.WriteAttributeString("orderid", group.Key.DocNum.ToString());
                    xmlWriter.WriteElementString("type", group.Key.Type);    
                        xmlWriter.WriteElementString("status", group.Key.Status);             
                        xmlWriter.WriteElementString("productno", group.Key.productno);                              xmlWriter.WriteElementString("ProductDescription", group.Key.ProductDescription);                       
                      xmlWriter.WriteElementString("PlannedQty",group.Key.PlannedQty.ToString());                                              
                        xmlWriter.WriteElementString("uom", group.Key.uom);
                        xmlWriter.WriteElementString("salesorder", group.Key.OriginNum.ToString());                                                          xmlWriter.WriteElementString("customer", group.Key.customer);                        
                        xmlWriter.WriteElementString("Remarks", group.Key.remark);
                        xmlWriter.WriteStartElement("date");
                        xmlWriter.WriteElementString("orderdate", group.Key.orderdate.ToString());
                        xmlWriter.WriteElementString("duedate", group.Key.duedate.ToString());
                        xmlWriter.WriteEndElement();
                        xmlWriter.WriteElementString("jobdescription", group.Key.U_JobNumber);                 
                        xmlWriter.WriteElementString("salesperson", group.Key.U_SalesPerson);
                    xmlWriter.WriteElementString("jobtype", group.Key.U_JobType);
                    foreach (DataRow row in group)
                    {
                        xmlWriter.WriteStartElement("Components");
                        xmlWriter.WriteElementString("itemno", row.Field<string>("itemno"));
                        xmlWriter.WriteEndElement();
                    }
                    xmlWriter.WriteEndElement();
                    var sql2 = "update IS_XML_generated='Y' from OWOR where DocNum=group.Key.DocNum";
                    clsDB.Execute(sql2);
                    xmlWriter.WriteEndElement();
                }
                var xml = stringwriter.ToString();
                XmlDocument docSave = new XmlDocument();
                docSave.LoadXml(stringwriter.ToString());
                docSave.Save(System.IO.Path.Combine(@"C:\DEMO PSL\DOXMLFILE", "Filename" + count.ToString() + ".xml"));
                count++;
            }
System.Data.DataTable checkFile=new System.Data.DataTable();
sql=“sql”;
DBCon clsDB=新的DBCon(SAPCompanySettings.MSSQLConnectionString);
执行(sql,ref checkFile);
var groups=checkFile.AsEnumerable().GroupBy(x=>new{DocNum=x.Field(“orderid”)、Type=x.Field(“Type”)、Status=x.Field(“Status”)、productno=x.Field(“productno”)、ProductDescription=x.Field(“ProductDescription”)、uom=x.Field(“customer”)、remark=x.Field(“备注”)、U\U JobNumber=x.Field(“U\U JobNumber”),U_SalesPerson=x.Field(“U_SalesPerson”)、U_JobType=x.Field(“U_JobType”)、PlannedQty=x.Field(“PlannedQty”)、OriginNum=x.Field(“OriginNum”)、orderdate=x.Field(“orderdate”)、duedate=x.Field(“duedate”)};
整数计数=1;
foreach(组中的var组)
{
var stringwriter=新的stringwriter();
使用(var xmlWriter=xmlWriter.Create(stringwriter,新的XmlWriterSettings{Indent=true}))
{
xmlWriter.WriteStartDocument();
writeStarteElement(“根”);
writeStart元素(“productionorder”);
WriteAttributeString(“orderid”,group.Key.DocNum.ToString());
WriteElementString(“type”,group.Key.type);
WriteElementString(“status”,group.Key.status);
xmlWriter.WriteElementString(“productno”,group.Key.productno);xmlWriter.WriteElementString(“Produ
             System.Data.DataTable checkFile = new System.Data.DataTable();
                sql = "sql";
                DBCon clsDB = new DBCon(SAPCompanySettings.MSSQLConnectionString);
                clsDB.Execute(sql, ref checkFile);                

            var groups = checkFile.AsEnumerable().GroupBy(x => new { DocNum = x.Field<int>("orderid"), Type = x.Field<string>("Type"), Status = x.Field<string>("Status"), productno = x.Field<string>("productno"), ProductDescription = x.Field<string>("ProductDescription"), uom = x.Field<string>("uom"), customer = x.Field<string>("customer"), remark = x.Field<string>("remark"), U_JobNumber = x.Field<string>("U_JobNumber"), U_SalesPerson = x.Field<string>("U_SalesPerson"), U_JobType = x.Field<string>("U_JobType"), PlannedQty = x.Field<decimal>("PlannedQty"), OriginNum = x.Field<int?>("OriginNum"), orderdate = x.Field<DateTime>("orderdate"), duedate = x.Field<DateTime>("duedate") });
            int count = 1;
            foreach (var group in groups)
            {
                var stringwriter = new StringWriter();
                using (var xmlWriter = XmlWriter.Create(stringwriter, new XmlWriterSettings { Indent = true }))
                {
                    xmlWriter.WriteStartDocument();
                    xmlWriter.WriteStartElement("Root");
                    xmlWriter.WriteStartElement("productionorder");
                    xmlWriter.WriteAttributeString("orderid", group.Key.DocNum.ToString());
                    xmlWriter.WriteElementString("type", group.Key.Type);    
                        xmlWriter.WriteElementString("status", group.Key.Status);             
                        xmlWriter.WriteElementString("productno", group.Key.productno);                              xmlWriter.WriteElementString("ProductDescription", group.Key.ProductDescription);                       
                      xmlWriter.WriteElementString("PlannedQty",group.Key.PlannedQty.ToString());                                              
                        xmlWriter.WriteElementString("uom", group.Key.uom);
                        xmlWriter.WriteElementString("salesorder", group.Key.OriginNum.ToString());                                                          xmlWriter.WriteElementString("customer", group.Key.customer);                        
                        xmlWriter.WriteElementString("Remarks", group.Key.remark);
                        xmlWriter.WriteStartElement("date");
                        xmlWriter.WriteElementString("orderdate", group.Key.orderdate.ToString());
                        xmlWriter.WriteElementString("duedate", group.Key.duedate.ToString());
                        xmlWriter.WriteEndElement();
                        xmlWriter.WriteElementString("jobdescription", group.Key.U_JobNumber);                 
                        xmlWriter.WriteElementString("salesperson", group.Key.U_SalesPerson);
                    xmlWriter.WriteElementString("jobtype", group.Key.U_JobType);
                    foreach (DataRow row in group)
                    {
                        xmlWriter.WriteStartElement("Components");
                        xmlWriter.WriteElementString("itemno", row.Field<string>("itemno"));
                        xmlWriter.WriteEndElement();
                    }
                    xmlWriter.WriteEndElement();
                    var sql2 = "update IS_XML_generated='Y' from OWOR where DocNum=group.Key.DocNum";
                    clsDB.Execute(sql2);
                    xmlWriter.WriteEndElement();
                }
                var xml = stringwriter.ToString();
                XmlDocument docSave = new XmlDocument();
                docSave.LoadXml(stringwriter.ToString());
                docSave.Save(System.IO.Path.Combine(@"C:\DEMO PSL\DOXMLFILE", "Filename" + count.ToString() + ".xml"));
                count++;
            }