c# - 如何在 C# 模型中命名我的 XML 标头 'header list-id: "inventory"'?
问题描述
我正在处理的项目的第一步是XML
从记录列表中创建一个文件。它曾经是java
用C#
. 他们在 java 中这样做的方式是明确写出每一行,我正在尝试结合一种以编程方式执行此操作的方法,以便可以在后续部署步骤中更改值。
我必须复制的文件的标题名称为header list-id: "inventory"。
我只是写'标题'很好,但我不知道如何包含其余部分。
[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 xmlns="http://www.demandware.com/xml/impex/inventory/2007-05-31">
<inventory-list>
<header list-id="inventory">
<default-instock>false</default-instock>
<description>Inventory</description>
<use-bundle-inventory-only>false</use-bundle-inventory-only>
<on-order>false</on-order>
</header>
如果我在模型中写这个:
public partial class inventoryInventorylist
{
[XmlElement("header list-id:\"inventory\"")]
public inventoryInventorylistHeader 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。
我通常做的是获取xml并使用visual studio生成一个xsd。然后我将打开一个 vs developer 命令提示符并使用 xsd.exe 生成类。然后可以稍微重构这些代码以在代码中看起来更好。
推荐阅读
- javascript - 在 useEffect 中定义时,突出显示 div 的变量未正确设置
- java - 我怎么知道是什么导致了我的实体类 getTeamId 中的空指针
- excel - 删除 BG 列中没有信息的所有行
- python - sqlite3 和 python :sqlite3.OperationalError:
- python-3.x - 如何将sql查询转换为列表?
- flutter - 在警报对话框中保存多选选择芯片选择/未选择状态
- javascript - Chrome/V8 如何处理 javascript 中的大对象?
- php - 点击事件上的jquery只触发一次
- vgg-net - 使用 vgg16 提取特征来训练 LSTM
- java - 从 JpaRepository 检索对象后,延迟加载在简单的 Hibernate/Spring 启动示例中不起作用