C# 基于orderid保存单独的xml文件
您好,所有当前我已将所有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);
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++;
}