我为XML序列化创建了一个.NET类
[Serializable()]
[XmlRoot("documents")]
public class BdfXmlData
{
[XmlElement("document")]
public List<XmlElement> Documents { get; set; }
public BdfXmlData()
{
Documents = new List<XmlElement>();
}
}
当我尝试序列化一个对象时,我得到了这棵树:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfXmlElement xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<XmlElement>
<documents>
<document>
...
<document>
<documents>
</XmlElement>
</ArrayOfXmlElement>
我怎样才能拥有以下三个?
<?xml version="1.0" encoding="utf-8"?>
<documents>
<document>
...
<document>
<documents>
提前致谢。
序列化我的类的代码如下:
public static string GetSerializedObject<T>(T t)
{
using (MemoryStream stream = new MemoryStream())
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
serializer.Serialize(stream, t);
stream.Position = 0;
using (StreamReader reader = new StreamReader(stream))
return reader.ReadToEnd();
}
}
答案 0 :(得分:0)
我认为你至少可以简化你的xml代码:
<ArrayOfdocuments xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<documents>
<document>
...
<document>
<documents>
</ArrayOfdocuments>
可以省略“XmlElement”元素。
答案 1 :(得分:0)
当然,您正在序列化一个BdfXmlData
数组 伪代码中的
BdfXmlData[] dataInArray = new [] {new BdfXmlData()};
GetSerializedObject(dataInArray)
会产生你所拥有的东西,而
伪代码中的..
BdfXmlData data = new BdfXmlData();
GetSerializedObject(data)
应该给你你想要的东西!
答案 2 :(得分:0)
确切,我序列化了Documents集合:
SerializationHelper.GetSerializedObject(xmlRootData.Documents);
事实上,我收到了一些带有这棵树的XmlElement:
<document>
...
<document>
我将这些元素添加到我的列表&#34;文档&#34;。
xmlRootData.Documents.Add(xmlData);
当我序列化我的最终对象(BdfXmlData)时,xml包含2个文档标签和2个文档标签
string xmlData = SerializationHelper.GetSerializedObject(xmlRootData);
<documents xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<document>
<documents>
<document>
</document>
<documents>
</document>
</documents>