这是MSND上的生成XML源码,小弟在调试时候发现,此方法并没有给出生成多条XML记录的示例
请教高手如何修改次代码达到以下要求的效果生成XML源码
using System;
using System.Xml;
using System.Xml.Serialization;
using System.IO;[XmlRootAttribute("PurchaseOrder", Namespace="http://www.cpandl.com", 
IsNullable = false)]
public class PurchaseOrder
{
   public Address ShipTo;
   public string OrderDate; 
   [XmlArrayAttribute("Items")]
   public OrderedItem[] OrderedItems;
   public decimal SubTotal;
   public decimal ShipCost;
   public decimal TotalCost;   
}
 
public class Address
{
   [XmlAttribute]
   public string Name;
   public string Line1;   [XmlElementAttribute(IsNullable = false)]
   public string City;
   public string State;
   public string Zip;
}
 
public class OrderedItem
{
   public string ItemName;
   public string Description;
   public decimal UnitPrice;
   public int Quantity;
   public decimal LineTotal;
   public void Calculate()
   {
      LineTotal = UnitPrice * Quantity;
   }
}
 
public class Test
{
   public static void Main()
   {
   
      Test t = new Test();
      t.CreatePO("po.xml");
    
   }   private void CreatePO(string filename)
   {
      XmlSerializer serializer = 
      new XmlSerializer(typeof(PurchaseOrder));
      TextWriter writer = new StreamWriter(filename);
      PurchaseOrder po=new PurchaseOrder();
       
      Address billAddress = new Address();
      billAddress.Name = "Teresa Atkinson";
      billAddress.Line1 = "1 Main St.";
      billAddress.City = "AnyTown";
      billAddress.State = "WA";
      billAddress.Zip = "00000";
      // Set ShipTo and BillTo to the same addressee.
      po.ShipTo = billAddress;
      po.OrderDate = System.DateTime.Now.ToLongDateString();
 
      // Create an OrderedItem object.
      OrderedItem i1 = new OrderedItem();
      i1.ItemName = "Widget S";
      i1.Description = "Small widget";
      i1.UnitPrice = (decimal) 5.23;
      i1.Quantity = 3;
      i1.Calculate();
 
      // Insert the item into the array.
      OrderedItem [] items = {i1};
      po.OrderedItems = items;
      // Calculate the total cost.
      decimal subTotal = new decimal();
      foreach(OrderedItem oi in items)
      {
         subTotal += oi.LineTotal;
      }
      po.SubTotal = subTotal;
      po.ShipCost = (decimal) 12.51; 
      po.TotalCost = po.SubTotal + po.ShipCost; 
      // Serialize the purchase order, and close the TextWriter.
      serializer.Serialize(writer, po);
      writer.Close();
   }
 
  }目前达到的效果<?xml version="1.0" encoding="utf-8"?>
<PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ShipTo Name="Teresa Atkinson">
    <Line1>1 Main St.</Line1>
    <City>AnyTown</City>
    <State>WA</State>
    <Zip>00000</Zip>
  </ShipTo>
  <OrderDate>2009年2月15日</OrderDate>
  <Items>
    <OrderedItem>
      <ItemName>Widget S</ItemName>
      <Description>Small widget</Description>
      <UnitPrice>5.23</UnitPrice>
      <Quantity>3</Quantity>
      <LineTotal>15.69</LineTotal>
    </OrderedItem>
  </Items>
  <SubTotal>15.69</SubTotal>
  <ShipCost>12.51</ShipCost>
  <TotalCost>28.20</TotalCost>
</PurchaseOrder>
我想达到的效果<?xml version="1.0" encoding="utf-8"?>
<PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ShipTo Name="Teresa Atkinson">
    <Line1>1 Main St.</Line1>
    <City>AnyTown</City>
    <State>WA</State>
    <Zip>00000</Zip>
  </ShipTo>
  <OrderDate>2009年2月15日</OrderDate>
  <Items id="1">
    <OrderedItem>
      <ItemName>Widget S</ItemName>
      <Description>Small widget</Description>
      <UnitPrice>5.23</UnitPrice>
      <Quantity>3</Quantity>
      <LineTotal>15.69</LineTotal>
    </OrderedItem>
  </Items>
   <Items id="2">
    <OrderedItem>
      <ItemName>Widget S</ItemName>
      <Description>Small widget</Description>
      <UnitPrice>5.23</UnitPrice>
      <Quantity>3</Quantity>
      <LineTotal>15.69</LineTotal>
    </OrderedItem>
  </Items>
  <SubTotal>15.69</SubTotal>
  <ShipCost>12.51</ShipCost>
  <TotalCost>28.20</TotalCost>
</PurchaseOrder>多谢!!

解决方案 »

  1.   

    顺便问下 生成的XML<?xml version="1.0" encoding="utf-8"?> 
    <PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 我想修改成<?xml version="1.0" encoding="GB18030"?> 
    <PurchaseOrder">如何实现??? 
      

  2.   

    晕想到 达到的效果 写错了 怎么不能修改呢???
    <?xml version="1.0" encoding="utf-8"?> 
    <PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
      <ShipTo Name="Teresa Atkinson"> 
        <Line1>1 Main St. </Line1> 
        <City>AnyTown </City> 
        <State>WA </State> 
        <Zip>00000 </Zip> 
      </ShipTo> 
      <OrderDate>2009年2月15日 </OrderDate> 
      <Items > 
        <OrderedItem id="1"
          <ItemName>Widget S </ItemName> 
          <Description>Small widget </Description> 
          <UnitPrice>5.23 </UnitPrice> 
          <Quantity>3 </Quantity> 
          <LineTotal>15.69 </LineTotal> 
        </OrderedItem> 
     
     
        <OrderedItem id="2"
          <ItemName>Widget S </ItemName> 
          <Description>Small widget </Description> 
          <UnitPrice>5.23 </UnitPrice> 
          <Quantity>3 </Quantity> 
          <LineTotal>15.69 </LineTotal> 
        </OrderedItem> 
      </Items> 
      <SubTotal>15.69 </SubTotal> 
      <ShipCost>12.51 </ShipCost> 
      <TotalCost>28.20 </TotalCost> 
    </PurchaseOrder> 
      

  3.   

    http://www.cnblogs.com/fengmk2/archive/2007/08/16/857960.html
    http://www.cnblogs.com/Marvel/archive/2009/01/20/1379041.html
      

  4.   

    public class OrderedItem 

     
     [XmlAttribute] 
     public int id;

      public string ItemName; 
      public string Description; 
      public decimal UnitPrice; 
      public int Quantity; 
      public decimal LineTotal; 
      public void Calculate() 
      { 
          LineTotal = UnitPrice * Quantity; 
      } 
    } 然后记得在CreatePO给它赋值
      

  5.   

    初始化多个OrderedItem给items加多个即可 // Create an OrderedItem object. 
          OrderedItem i1 = new OrderedItem(); 
          i1.ItemName = "Widget S"; 
          i1.Description = "Small widget"; 
          i1.UnitPrice = (decimal) 5.23; 
          i1.Quantity = 3; 
          i1.Calculate();     OrderedItem i2 = new OrderedItem(); 
          i2.ItemName = "Widget S111"; 
          i2.Description = "Small widget111"; 
          i2.UnitPrice = (decimal) 5.23; 
          i2.Quantity = 4; 
          i2.Calculate(); 
          。初始化多个      // Insert the item into the array. 
          OrderedItem [] items = {i1, i2, ...加入多个}; 
      

  6.   

    非常感谢  问题解决!!顺便问下 生成的XML <?xml version="1.0" encoding="utf-8"?> 
    <PurchaseOrder xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 我想修改成 <?xml version="1.0" encoding="GB18030"?> 
    <PurchaseOrder">