如何命名我的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;
}