c#XML数组反序列化只返回第一个元素
我需要反序列化下一个XML,但结果数组只包含第一个元素:c#XML数组反序列化只返回第一个元素,c#,xml,deserialization,C#,Xml,Deserialization,我需要反序列化下一个XML,但结果数组只包含第一个元素: <data> <cards> <card id="1"> <title>card1text</title> <category>card1cat</category> </card> <card id="2"> <title>card2text<
<data>
<cards>
<card id="1">
<title>card1text</title>
<category>card1cat</category>
</card>
<card id="2">
<title>card2text</title>
<category>card2cat</category>
</card>
<card id="3">
<title>card3text</title>
<category>card3cat</category>
</card>
</cards>
</data>
反序列化:
public Data data { get; private set; }
private void Awake()
{
var deserializer = new XmlSerializer(typeof(Data));
var stream = new StreamReader(filePath);
data = deserializer.Deserialize(stream) as Data;
stream.Close();
if (data.cards != null)
{
foreach (var card in data.cards)
{
print("card " + card.id + " " + card.title);
}
}
}
反序列化似乎工作得很好,但我从
我尝试使用[XmlElement]代替XmlArray,但也失败了。
提前感谢。例如,您可以使用从xml获取C类
[XmlRoot(ElementName = "card")]
public class Card
{
[XmlElement(ElementName = "title")]
public string Title { get; set; }
[XmlElement(ElementName = "category")]
public string Category { get; set; }
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
}
[XmlRoot(ElementName = "cards")]
public class Cards
{
[XmlElement(ElementName = "card")]
public List<Card> Card { get; set; }
}
[XmlRoot(ElementName = "data")]
public class Data
{
[XmlElement(ElementName = "cards")]
public Cards Cards { get; set; }
}
[XmlRoot(ElementName=“card”)]
公务舱卡
{
[xmlement(ElementName=“title”)]
公共字符串标题{get;set;}
[xmlement(ElementName=“category”)]
公共字符串类别{get;set;}
[XmlAttribute(AttributeName=“id”)]
公共字符串Id{get;set;}
}
[XmlRoot(ElementName=“cards”)]
公共课卡
{
[XmlElement(ElementName=“卡”)]
公共列表卡{get;set;}
}
[XmlRoot(ElementName=“data”)]
公共类数据
{
[xmlement(ElementName=“cards”)]
公共卡{get;set;}
}
例如,您可以使用从xml获取C类
[XmlRoot(ElementName = "card")]
public class Card
{
[XmlElement(ElementName = "title")]
public string Title { get; set; }
[XmlElement(ElementName = "category")]
public string Category { get; set; }
[XmlAttribute(AttributeName = "id")]
public string Id { get; set; }
}
[XmlRoot(ElementName = "cards")]
public class Cards
{
[XmlElement(ElementName = "card")]
public List<Card> Card { get; set; }
}
[XmlRoot(ElementName = "data")]
public class Data
{
[XmlElement(ElementName = "cards")]
public Cards Cards { get; set; }
}
[XmlRoot(ElementName=“card”)]
公务舱卡
{
[xmlement(ElementName=“title”)]
公共字符串标题{get;set;}
[xmlement(ElementName=“category”)]
公共字符串类别{get;set;}
[XmlAttribute(AttributeName=“id”)]
公共字符串Id{get;set;}
}
[XmlRoot(ElementName=“cards”)]
公共课卡
{
[XmlElement(ElementName=“卡”)]
公共列表卡{get;set;}
}
[XmlRoot(ElementName=“data”)]
公共类数据
{
[xmlement(ElementName=“cards”)]
公共卡{get;set;}
}
非常感谢!但谁会让我回到我生命中的6小时?非常感谢!但是谁会让我回到我生命中的6个小时?你的代码工作得很好,只要再检查一下xml文件,让我解释一下[XElement]和[XmlArray]之间的区别。[XmlArray]需要两层标记,如cards和card in xml。所以你只需要一张班级卡(或者两张卡都不需要)。使用[XElement]时,每个标记都需要一个类。因此,您需要一个类卡片和一个类卡片。您的代码运行良好,只需再次检查xml文件,并解释[XElement]和[XmlArray]之间的区别。[XmlArray]需要两层标记,如cards和card in xml。所以你只需要一张班级卡(或者两张卡都不需要)。使用[XElement]时,每个标记都需要一个类。所以你需要一张班级卡和一张班级卡。