我正在尝试解析一个xml数组,它在一个奇怪的地方有一个属性。
这是我的(在stackowerflow上的某处)解析器代码:
public static string Serialize (object objectToSerialize)
{
MemoryStream mem = new MemoryStream ();
XmlSerializer ser = new XmlSerializer (objectToSerialize.GetType ());
ser.Serialize (mem, objectToSerialize);
UTF8Encoding utf = new UTF8Encoding ();
return utf.GetString (mem.ToArray ());
}
public static T Deserialize<T> (string xmlString)
{
byte[] bytes = Encoding.UTF8.GetBytes (xmlString);
MemoryStream mem = new MemoryStream (bytes);
XmlSerializer ser = new XmlSerializer (typeof(T));
return (T)ser.Deserialize (mem);
}
这适用于所有情况(我需要),除了这里:
<hr>
<type n="easy">
<scores>
<country name="USA">
<score nickname="steve" rank="1">1982</score>
<score nickname="bill" rank="2">1978</score>
...
这是我的模板类:
public class CountryList
{
public CountryList ()
{
}
[XmlArray("country")]
[XmlArrayItem("score")]
public ScoreAndRank[]
country;
[XmlAttribute("name")]
public string
name;
}
}
正确解析得分数组,但“名称”始终为空。 我甚至可以得到n out的值,(作为[XmlAttribute(“n”)])。 任何提示如何解决这个问题?
编辑:基于SveinFidjestøl链接的解决方案
[XmlType("country")]
public class ScoreContainer
{
public ScoreContainer ()
{
}
[XmlElement("score")]
public ScoreAndRank[] country;
[XmlAttribute("name")]
public string name;
}
像魅力一样。
答案 0 :(得分:0)
为了将XML属性添加到XML数组,您需要为数组元素声明一个类。
可在此处找到更详细的答案:How do I add a attribute to a XmlArray element (XML Serialization)?