我想为我的教堂创建一个从保存文件中获取歌曲的程序。但我不知道如何将这些数据放入多维数组中。下面是我想放入数组的东西。那可能吗?(我是 C# 的新手)
<items>
<CMediaBase xsi:type="CSong">
<DisplayTitle>Eigen bundel 10 - In Jesus name</DisplayTitle>
<IsDirty>false</IsDirty>
<SwapLanguages>false</SwapLanguages>
<SongLanguage>Both</SongLanguage>
<MediaType>Song</MediaType>
<Number>10</Number>
<SelectedVersion>MyVersion</SelectedVersion>
<SongBookName>Eigen bundel</SongBookName>
<ThemeName>OPS</ThemeName>
<Title>In Jesus name</Title>
</CMediaBase>
</items>
我认为您没有使用适当的数据结构来解决问题。
二维数组不能解决这里的问题,归结为解析您的歌曲 XML 文件并将该数据表示转换为您可以在 C# 中使用的内容。
我建议用 C# 类来表示您的歌曲,如下所示:
[XmlRoot("SongList")]
public class SongList
{
[XmlElement("Song")]
public List<Song> Songs { get; set; }
}
public class Song
{
[XmlElement("DisplayTitle")]
public string DisplayTitle { get; set; }
[XmlElement("IsDirty")]
public bool IsDirty { get; set; }
[XmlElement("SwapLanguage")]
public bool SwapLanguage { get; set; }
[XmlElement("SongLanguage")]
public string SongLanguage { get; set; }
[XmlElement("MediaType")]
public string MediaType { get; set; }
[XmlElement("Number")]
public int Number { get; set; }
[XmlElement("SongBookName")]
public string SongBookName { get; set; }
[XmlElement("ThemeName")]
public string ThemeName { get; set; }
[XmlElement("Title")]
public string Title { get; set; }
}
请注意[XmlElement]和[XmlRoot]属性的使用,它们允许我们向 XML 序列化程序指定如何将您的 XML 表示解析为该 XML 的 C# 表示。
现在使用如下的 XML 字符串:
string xml = @"<SongList>
<Song>
<DisplayTitle> Eigen bundel 10 - In Jesus name</DisplayTitle>
<IsDirty > false </IsDirty>
<SwapLanguages >false </SwapLanguages>
<SongLanguage > Both </SongLanguage >
<MediaType >Song</MediaType >
<Number>10</Number >
<SelectedVersion >MyVersion</SelectedVersion >
<SongBookName > Eigen bundel</SongBookName >
<ThemeName >OPS</ThemeName >
<Title >In Jesus name</Title>
</Song>
<Song>
<DisplayTitle > Song 2</DisplayTitle >
<IsDirty > true </IsDirty >
<SwapLanguages > false </SwapLanguages >
<SongLanguage > Both </SongLanguage >
<MediaType > Song </MediaType >
<Number > 10 </Number >
<SelectedVersion > MyVersion </SelectedVersion >
<SongBookName > Eigen bundel </SongBookName >
<ThemeName > OPS </ThemeName >
<Title > In Jesus name</Title >
</Song>
</SongList>";
然后,您可以使用 C# 序列化程序将此 XML 表示反序列化为对象表示,如下所示:
var serializer = new XmlSerializer(typeof(SongList));
using (var reader = new StringReader(xml))
{
var albums = serializer.Deserialize(reader) as SongList;
}
如果你想读取一个文本文件,你应该将文件加载到 FileStream 中并像这样反序列化它:
using (var fs= new FileStream("<YOUR XML FILE PATH>", FileMode.Open))
{
var songList = serializer.Deserialize(fs) as SongList;
}
请注意,您应该导入以下命名空间才能使用 XML 序列化程序和 FileStream 类:
using System.IO;
using System.Xml;
using System.Xml.Serialization;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句