![](/img/trans.png)
[英]Deserialize different xml elements with same name into different C# classes
[英]C# get a list of all elements with the same name - XML Deserialize
我尝试获取XML文件中所有声音元素的列表。
我得到了所有标记但是当我试图获得标签声音的所有元素时,我什么也得不到。 该列表始终为0。
根类
[XmlArray("markers")]
[XmlArrayItem("marker")]
public List<WaypointInfo> markers = new List<WaypointInfo>();
[XmlArray("pattern")]
[XmlArrayItem("sound")]
public List<SoundInfo> soundsInfo = new List<SoundInfo> ();
/// <summary>
/// The file extension.
/// </summary>
public static readonly string fileExtensionMp3 = "*.mp3";
public static FileLoader loadInformationXML(string filePath){
//Define the rootclass
XmlSerializer serializer = new XmlSerializer (typeof(FileLoader));
//Create inputstream
FileStream fl = new FileStream (filePath, FileMode.Open);
//Extract the stream and save it into our root class
FileLoader xmlData = serializer.Deserialize (fl) as FileLoader;
//Close the inputstream
fl.Close ();
return xmlData;
}
标记arraylist是正确的,但另一个声音列表始终为空。
类WaypointsInfo
using UnityEngine;
using System.Collections.Generic;
using System.Xml.Serialization;
public class WaypointInfo {
[XmlAttribute("name")]
public string markerName;
public Pattern pattern = new Pattern();
}
Soundinfo类
using UnityEngine;
using System.Xml.Serialization;
using System.Collections;
public class SoundInfo {
/// <summary>
/// The minimum distance that triggers this sound.
/// </summary>
[XmlAttribute("distance")]
public float distance;
/// <summary>
/// When this sound has been played the last time, in runtime milliseconds.
/// </summary>
public float lastPlayed;
/// <summary>
/// If this sound should be looped.
/// </summary>
public bool looped;
}
和xml文件
<soundpackage>
<markers>
<marker name="bird">
<pattern name="aPattern">
<sound distance="10">bird.mp3</sound>
<sound distance="10">bird.mp3</sound>
</pattern>
</marker>
</markers>
</soundpackage>
您的根节点是否具有类似xmlns=http;//somepath
? 然后你正在处理命名空间。 当您获得零结果并且您确定正确引用它时,必须考虑命名空间。
我不熟悉Xml序列化。 所以我查找了XML序列化的名称空间。 这是另一个StackOverflow线程的示例。
有关命名空间的序列化答案,请参阅此答案 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.