我正試圖將一些格式不佳的 XML 進行序列化。我特別遇到了將重復的元素轉換為陣列的問題。
。在通常情況下,像這樣的東西可以很好地進行序列化
類public class Animal
{
[XmlArray("Dogs")]
[XmlArrayItem("Dog", typeof(Dog))]
public Dog[] Dogs {get; set; }
}
XML
<Animals>
<狗>>
<Dog>/span>
<Name>Spot</Name>/span>
<年齡>5</年齡>/span>
</狗>
<Dog>/span>
<Name>Spike</Name>/span>
<年齡>2</年齡>
</Dog>/span>
<Dog>/span>
<Name>Arnold</Name>
<年齡>7</年齡>
</Dog>
</Dog>>
</Animals>/span>
在現實中,XML的結構如下
<Animals>
<狗>/span>
<Name>Spot</Name>/span>
<年齡>5</年齡>/span>
</狗>
<Dog>/span>
<Name>Spike</Name>/span>
<年齡>2</年齡>
</Dog>/span>
<Dog>/span>
<Name>Arnold</Name>
<年齡>7</年齡>
</Dog>
</Animals>
我有什么最簡單的方法可以將這些屬性序列化為一個陣列?
uj5u.com熱心網友回復:
[XmlElement(ElementName = "Dog")]
public Dog[] Dogs {get;set;}
uj5u.com熱心網友回復:
這個問題沒有包含序列化方法的代碼。無論如何,上面描述的XML標記在使用以下序列化方法時應該是有效的:
public class Animals
{
[]
[]
public Dog[] Dogs { get; set; }
}
public static string SerializeToXml(object o)
{
var ns = new XmlSerializerNamespaces(new[] { Ident=true, XmlQualifiedName.Empty }) 。
using (var stream = new StringWriter()
using (var writer = XmlWriter.Create(stream, new XmlWriterSettings { OmitXmlDeclaration = true })
{
var serializer = new XmlSerializer(typeof(Animals) )。)
serializer.Serialize(writer, o, ns)。
return stream.ToString()。
}
測驗代碼
var animals = new Animals()
{
Dogs = new Dog[] { new Dog { Name = "dog1"/span>, 年齡 = 6 }, new Dog { Name = "dog2", age = 7 } }
};
var xml = SerializeToXml(imals);
將產生如下的XML:
<Animals>
<狗>>
<Dog>/span>
<Name>/span>dog1</Name>/span>
<年齡>6</年齡>/span>
</Dog>
<Dog>/span>
<Name>/span>dog2</Name>
<年齡>7</年齡>/span>
</Dog>
</Dog>>
</Animals>/span>
更多資訊請參見序列化物件陣列。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/323076.html
標籤:
