XML文件:
<AttackPattern>
<AttackPatternLeft>
<Pattern>
<Player Id="GK">
<PositionX>0.0</PositionX>
<PositionY>0.0</PositionY>
</Player>
<Player Id="DL">
<PositionX>0.0</PositionX>
<PositionY>1.0</PositionY>
</Player>
<Player Id="DR">
<PositionX>0.0</PositionX>
<PositionY>2.0</PositionY>
</Player>
<Player Id="MDFL">
<PositionX>0.0</PositionX>
<PositionY>3.0</PositionY>
</Player>
<Player Id="MDFR">
<PositionX>0.0</PositionX>
<PositionY>4.0</PositionY>
</Player>
</Pattern>
</AttackPatternLeft>
</AttackPattern>
TeamContainer.cs
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Xml;
using System.Xml.Serialization;
using System.IO;
[XmlRoot("AttackPattern")]
public class TeamContainer
{
我应该在这里写什么,以便我可以通过查询子数组或AttackPatternLeft元素来继续XML;
//[XmlElement("AttackPatternLeft")]
[XmlArray("Pattern")]
[XmlArrayItem("Player")]
public List<Team> listTeam = new List<Team> ();
// Use this for initialization
public static TeamContainer Load(string path)
{
TextAsset lobjTextAssetXML = Resources.Load<TextAsset>(path);
XmlSerializer serializer = new XmlSerializer (typeof(TeamContainer));
StringReader reader = new StringReader (lobjTextAssetXML.text);
TeamContainer lobjTeamContainer = serializer.Deserialize (reader) as TeamContainer;
reader.Close();
return lobjTeamContainer;
}
}
TeamLoader.cs
using UnityEngine;
using System.Collections;
public class TeamLoader : MonoBehaviour {
public const string path = "AttackPattern";
// Use this for initialization
void Start () {
TeamContainer lobjTeamContainer = TeamContainer.Load (path);
//print ("check->"+ lobjTeamContainer.listTeam.Count);
foreach (Player lobjPlayer in lobjTeamContainer.listTeam) {
print ("------------------------");
print (lobjPlayer.strID);
print (lobjPlayer.fPositionX);
print (lobjPlayer.fPositionY);
}
}
}
如果我从XML文件中删除标记<AttackPatternLeft>
,我能够以XML格式读取Pattern数组,但是当我将模式数组作为<AttackPatternLeft>
元素的子元素
答案 0 :(得分:0)
您必须使用以下一组类:
[XmlRoot("AttackPattern")]
public class TeamContainer
{
public AttackPatternLeft AttackPatternLeft { get; set; }
}
public class AttackPatternLeft
{
[XmlArray("Pattern")]
[XmlArrayItem("Player")]
public List<Player> Team { get; set; }
}
public class Player
{
public decimal PositionX { get; set; }
public decimal PositionY { get; set; }
[XmlAttribute]
public string Id { get; set; }
}