【发布时间】:2014-08-26 13:30:59
【问题描述】:
好的,我正在使用 ASP MVC 并尝试加载一些 XML 数据,在将其转换为 JSON 时需要对其进行序列化。
我不明白的是,我的 XML 有不止一个后代。那么,当我序列化它时,我需要在模型中将每个后代的数据存储在自己的列表中,对吗?
我已经这样做了,所以我有两个单独的列表。那么,如何将这一切序列化到一个 XML 文档中呢?
这是我的 XML 标记示例:
<vehicle>
<make>Suzuki</make>
<color>Yellow></color>
<owner>
<id>0</id>
<name>Joe Bloggs</name>
</owner>
<owner>
<id>1</id>
<name>Foo Bar</name>
</owner>
</vehicle>
这是我的 XML 模型:
public partial class vehicle
{
private string makeField;
private string colorField;
private vehicleOwner[] ownerField;
/// <remarks/>
public string make {get; set;}
/// <remarks/>
public string color{get; set;}
[System.Xml.Serialization.XmlElementAttribute("owner")]
public vehicleOwner[] owner{ get; set;}
// Keep this in a list to serialize it
List<vehicle> vehicleList = new List<vehicle>();
}
/// <remarks/>
[System.Xml.Serialization.XmlTypeAttribute(AnonymousType = true)]
public partial class vehicleOwner
{
private int idField;
private string nameField;
/// <remarks/>
public int id { get; set;}
/// <remarks/>
public string nameField {get; set;}
// Stick it in a list so I can serialize it later
List<vehicleOwner> vehicleOwnerList = new List<vehicleOwner>();
}
}
所以,现在我有两个包含 XML 数据的列表:vehicleOwnerList 和 vehicleList。 但这些都是一个 XML 文档。那么我怎样才能为这两个列表序列化呢?我是否必须将它们合并到一个列表中,如果是,我该怎么做?
所以我.E.
List<vehicleOwner> listCombinedActions = new List<vehicleOwner>();
XmlDocument xmlDoc = new XmlDocument();
XPathNavigator nav = xmlDoc.CreateNavigator();
using (XmlWriter writer = nav.AppendChild())
{
XmlSerializer ser = new XmlSerializer(typeof(List<vehicle>), new XmlRootAttribute("owner"));
ser.Serialize(writer, listCombinedActions);
}
干杯
【问题讨论】:
-
首先尝试将
Element属性更改为owner属性和typeof(vehicle)的Array属性。您也可以使用 xsd.exe 工具通过命令xsd.exe your.xmlxsd.exe your.xsd /classes从 xml 生成类 -
好的 - 如果我改变它,这将如何影响它?数据仍存储在两个单独的列表中。我需要将这两个列表序列化为一个 XMLDoc。谢谢
-
存储在两个列表中是什么意思?为什么需要 XmlDocument?
-
好吧——也许我做错了什么。看看我发布的 XML 模型。 XML 文档有两部分:车辆和车辆所有者。对于每个部分,我都必须创建一个列表来填充它。有没有办法可以为这两种不同类型创建一个列表?
-
让我们从头开始。您有 xml 文件,并且想将其数据读取到您的对象中?
标签: c# xml list serialization asp-classic