数据如下: 包名-noofpackage重量 纸箱-6-43.2 鼓4-11.6 袋2-10.6
我只需为每个包类型生成包含详细信息的xml。 6个用于纸箱,4个用于鼓,2个用于包。因为我需要迭代所有包类型以获取noofpackage字段,如何阻止它为下一个包类型重新生成。以下是xml的结果,这是不正确的。
for (int i = 0; i < lstPackShipDtl.Count; i++)
{
int numOfPackage = Convert.ToInt32(lstPackShipDtl[i].NoOfPackage);
foreach (var PackSDtl in lstPackShipDtl)
{
for (int j = 0; j < numOfPackage; j++)
{
XmlNode PackageDetail = xmlDoc.CreateElement("PackageDetail");
XmlElement Weight = xmlDoc.CreateElement("Weight");
Weight.InnerText = PackSDtl.Weight;
PackageDetail.AppendChild(Weight);
XmlElement PackageDimensionsLength = xmlDoc.CreateElement("PackageDimensionsLength");
PackageDimensionsLength.InnerText = PackSDtl.DimensionLength;
PackageDetail.AppendChild(PackageDimensionsLength);
XmlElement PackageDimensionsWidth = xmlDoc.CreateElement("PackageDimensionsWidth");
PackageDimensionsWidth.InnerText = PackSDtl.DimensionWidth;
PackageDetail.AppendChild(PackageDimensionsWidth);
XmlElement PackageDimensionsHeight = xmlDoc.CreateElement("PackageDimensionsHeight");
PackageDimensionsHeight.InnerText = PackSDtl.DimensionHeight;
PackageDetail.AppendChild(PackageDimensionsHeight);
PackageAndShipmentsDetails.AppendChild(PackageDetail);
}
}
ShipmentDetails.AppendChild(PackageAndShipmentsDetails);
}
-<PackageAndShipmentsDetails>
<NumberOfPackages>3</NumberOfPackages>
<TotalsCarriageValue> 600.00</TotalsCarriageValue>
<TotalsCarriageValueCurrency>EUR</TotalsCarriageValueCurrency>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>11.6</Weight>
<PackageDimensionsLength>2</PackageDimensionsLength>
<PackageDimensionsWidth>2</PackageDimensionsWidth>
<PackageDimensionsHeight>2</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>43.2</Weight>
<PackageDimensionsLength>31</PackageDimensionsLength>
<PackageDimensionsWidth>23</PackageDimensionsWidth>
<PackageDimensionsHeight>22</PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
-<PackageDetail>
<Weight>10.6</Weight>
<PackageDimensionsLength> </PackageDimensionsLength>
<PackageDimensionsWidth> </PackageDimensionsWidth>
<PackageDimensionsHeight> </PackageDimensionsHeight>
</PackageDetail>
</PackageAndShipmentsDetails>
答案 0 :(得分:0)
如果我不理解你想要做什么,我很抱歉,但似乎你有太多的迭代。试试这个:
foreach (var PackSDtl in lstPackShipDtl)
{
int numOfPackage = Convert.ToInt32(PackSDtl.NoOfPackage);
for (int j = 0; j < numOfPackage; j++)
{
XmlNode PackageDetail = xmlDoc.CreateElement("PackageDetail");
XmlElement Weight = xmlDoc.CreateElement("Weight");
Weight.InnerText = PackSDtl.Weight;
PackageDetail.AppendChild(Weight);
XmlElement PackageDimensionsLength = xmlDoc.CreateElement("PackageDimensionsLength");
PackageDimensionsLength.InnerText = PackSDtl.DimensionLength;
PackageDetail.AppendChild(PackageDimensionsLength);
XmlElement PackageDimensionsWidth = xmlDoc.CreateElement("PackageDimensionsWidth");
PackageDimensionsWidth.InnerText = PackSDtl.DimensionWidth;
PackageDetail.AppendChild(PackageDimensionsWidth);
XmlElement PackageDimensionsHeight = xmlDoc.CreateElement("PackageDimensionsHeight");
PackageDimensionsHeight.InnerText = PackSDtl.DimensionHeight;
PackageDetail.AppendChild(PackageDimensionsHeight);
PackageAndShipmentsDetails.AppendChild(PackageDetail);
}
ShipmentDetails.AppendChild(PackageAndShipmentsDetails);
}
希望它有所帮助。
答案 1 :(得分:0)
使用xml linq和分组包:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XDocument doc = XDocument.Load(FILENAME);
var groups = doc.Descendants("PackageDetail")
.GroupBy(x => new {
Weight = (string)x.Element("Weight"),
PackageDimensionsLength = (string)x.Element("PackageDimensionsLength"),
PackageDimensionsWidth = (string)x.Element("PackageDimensionsWidth"),
PackageDimensionsHeight = (string)x.Element("PackageDimensionsHeight")
}).ToList();
foreach (var group in groups)
{
foreach (XElement packageDetail in group.Skip(1))
{
packageDetail.Remove();
}
}
}
}
}