用多行写入xml

时间:2013-07-26 11:21:33

标签: c# xml linq-to-xml

我正在开发一个c#应用程序。 我需要以这种形式编写公司产品详细信息。一家公司可能有一个以上的产品,一个xml文件可能只包含一家公司。每个公司都有一个xml文件。

<?xml version="1.0" encoding="utf-8" ?>
<list>
  <CompanyName>Test</CompanyName>
  <CompanyID>TestID</CompanyID>
  <Product>
    <ProductName>Prod</ProductName>
    <ProductID>ProdID</ProductID>
    <Expire>10.10.2010</Expire>
  </Product>
  <Product>
    <ProductName>Prod2</ProductName>
    <ProductID>ProdID2</ProductID>
    <Expire>11.10.2010</Expire>
  </Product>
  <Product>
    <ProductName>Prod3</ProductName>
    <ProductID>ProdID3</ProductID>
    <Expire>12.10.2010</Expire>
  </Product>
</list>

如何让一个xml文件在c#中有3个属性?

感谢您的帮助。

此致

1 个答案:

答案 0 :(得分:2)

如果您正在询问如何在C#中编写xml文件,那么您已经编写了一个类为类及其属性提供xml属性,然后序列化该类。

包含其所有数据的类的实例将序列化为xml:

以下是您的情况示例。

[XmlType(TypeName = "CompanyXml")]
public class Company : ISerializable
{
    [XmlElement("Product")]
    public List<Product> ListProduct { get; set; }

    [XmlElement("CompanyName")]
    public string CompanyName { get; set; }

    [XmlElement("CompanyID")]
    public string CompanyID { get; set; }
}

产品类看起来像:

[XmlType(TypeName = "Product")]
public class Product : ISerializable
{
    [XmlElement("ProductName")]
    public string ProductName { get; set; }

    [XmlElement("ProductID")]
    public string ProductID { get; set; }

    [XmlElement("Expires")]
    public string Expires { get; set; }
}

序列化代码可以如下:

using (StringWriter stringWriter = new StringWriter())
{
  XmlSerializer serializer = new XmlSerializer(typeof(Company));
  serializer.Serialize(stringWriter, companyInstance);
  XmlDocument xDoc = new XmlDocument();
  xDoc.LoadXml(stringWriter.ToString());
 }