如何命名我的XML头&x27;标题列表id:";存货';在C#模型中?

如何命名我的XML头&x27;标题列表id:";存货';在C#模型中?,c#,xml,xml-serialization,C#,Xml,Xml Serialization,我正在进行的项目的第一步是从记录列表创建一个XML文件。它以前是用java编写的,但我正在将它迁移到C。他们在java中实现的方式是显式地写出每一行,我正试图结合一种以编程方式实现的方式,以便在以后的部署步骤中更改值 我必须复制的文件的标题名为标题列表id:“inventory” 我只需要写“header”就可以了,但我不知道如何包含其余的内容 [Serializable()] [DesignerCategory("code")] [XmlType(A

我正在进行的项目的第一步是从记录列表创建一个
XML
文件。它以前是用
java
编写的,但我正在将它迁移到
C
。他们在java中实现的方式是显式地写出每一行,我正试图结合一种以编程方式实现的方式,以便在以后的部署步骤中更改值

我必须复制的文件的标题名为标题列表id:“inventory”

我只需要写“header”就可以了,但我不知道如何包含其余的内容

    [Serializable()]
    [DesignerCategory("code")]
    [XmlType(AnonymousType = false, Namespace = "http://www.demandware.com/xml/impex/inventory/2007-05-31")]
    [XmlRoot(Namespace = "http://www.demandware.com/xml/impex/inventory/2007-05-31", IsNullable = false)]
    public partial class inventory
    {

        private inventoryInventorylist inventorylistField;

        [XmlElement("inventory-list")]
        public inventoryInventorylist inventorylist
        {
            get
            {
                return inventorylistField;
            }
            set
            {
                inventorylistField = value;
            }
        }
    }

    [Serializable()]
    [DesignerCategory("code")]
    [XmlType(AnonymousType = true, TypeName = "inventory-list")]
    public partial class inventoryInventorylist
    {
        public inventoryInventorylistHeader header;

        private inventoryInventorylistHeader headerField
        {
            get
            {
                return header;
            }
            set
            {
                header = value;
            }
        }
    }

    [Serializable()]
    [DesignerCategory("code")]
    [XmlType(AnonymousType = false, TypeName = "header")]
    public partial class inventoryInventorylistHeader 
    {

        [XmlElement("default-instock")]
        public bool defaultinstock
        {
            get
            {
                return defaultinstockField;
            }
            set
            {
                defaultinstockField = false;
            }
        }

        [XmlElement("description")]
        public string description
        {
            get
            {
                return descriptionField;
            }
            set
            {
                descriptionField = "Inventory";
            }
        }

        [XmlElement("use-bundle-inventory-only")]
        public bool usebundleinventoryonly
        {
            get
            {
                return usebundleinventoryonlyField;
            }
            set
            {
                usebundleinventoryonlyField = false;
            }
        }

        [XmlElement("on-order")]
        public bool onorder
        {
            get
            {
                return onorderField;
            }
            set
            {
                onorderField = false;
            }
        }
}
创建:

 var inventory = new inventory()
 {
     inventorylist = new inventoryInventorylist()
     {
          header = new inventoryInventorylistHeader()
          {
              defaultinstock = false,
              description = "Inventory",
              usebundleinventoryonly = false,
              onorder = false
          }
     }
 }
返回以下内容:

<inventory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.demandware.com/xml/impex/inventory/2007-05-31">
  <inventory-list>
    <header>
      <default-instock>false</default-instock>
      <description>Inventory</description>
      <use-bundle-inventory-only>false</use-bundle-inventory-only>
      <on-order>false</on-order>
    </header>
然后变为:

<inventory-list>
    <header_x0020_list-id_x003A__x0022_inventory_x0022_>
      <default-instock>false</default-instock>
      <description>Inventory</description>
      <use-bundle-inventory-only>false</use-bundle-inventory-only>
      <on-order>false</on-order>
    </header_x0020_list-id_x003A__x0022_inventory_x0022_>

假的
库存
假的
假的

当我序列化模型时,如何强制它显示所需的文本?

您可以使用XmlAttribute属性。 如果你加上

[XmlAttribute("list-id")]
public string listid
{
    get;
    set;
}
对于inventoryInventorylistHeader类,您将获得问题中描述的xml

我通常做的是使用VisualStudio获取xml并生成xsd。
然后,我将打开vs developer命令提示符,并使用xsd.exe生成类。然后可以稍微重构这些元素,使其在代码中看起来更好。

当您使用[XmlElement()]时,is会创建一个xml标记。要为一个c#类属性创建两个标记,必须有一个数组或列表对象:public inventoryInventorylistHeader[]header;前面是[XmlArray(“inventory”)]和[XmlArrayItem(“inventory list”)]啊,谢谢!这很有效。你的方法听起来比我做的更好,那就是导入文件应该遵循的xsd。再次感谢你。
<inventory-list>
    <header_x0020_list-id_x003A__x0022_inventory_x0022_>
      <default-instock>false</default-instock>
      <description>Inventory</description>
      <use-bundle-inventory-only>false</use-bundle-inventory-only>
      <on-order>false</on-order>
    </header_x0020_list-id_x003A__x0022_inventory_x0022_>
[XmlAttribute("list-id")]
public string listid
{
    get;
    set;
}