作为嵌入式资源的XML数组
本文关键字:XML 数组 资源 嵌入式 | 更新日期: 2023-09-27 18:07:22
我一直在试图找到一个好的干净的方式来加载XML文件的内容到一个数组中使用,但我只找到部分答案在这里和那里。为了简单起见,我的XML文件是一个嵌入式资源,包含大约115个元素的列表,这些元素都包含一个id
和name
属性。
XML看起来像这样:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Items xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Item>
<id>1</id>
<name>Example1</name>
</Item>
<Item>
<id>2</id>
<name>Example2</name>
</Item>
<Item>
<id>3</id>
<name>Example3</name>
</Item>
</Items>
我能够加载一切,我看到我的数据在InnerXML,但我不知道如何正确访问它。
public Form1()
{
InitializeComponent();
assembly = Assembly.GetExecutingAssembly();
XmlDocument xml = null;
try
{
string filePath = "MyProject.ItemList.xml";
Stream fileStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(filePath);
if (fileStream != null)
{
xml = new XmlDocument();
xml.Load(fileStream);
}
}
catch {
//Do nothing
}
XmlDocument itemsFromXML = xml.DocumentElement.InnerXml;
foreach (XmlNode node in itemsFromXML)
{
int id = Convert.ToInt32(node.Attributes.GetNamedItem("id").ToString());
string name = node.Attributes.GetNamedItem("name").ToString();
gameItemList.Add(new GameItem(id, name));
}
}
这是我的代码,这将理想地设置这个数组为我使用,虽然它是相当破碎,由于我尝试不同的东西,但我认为它传达了一般的想法。希望有人能弄明白,并向我解释我做错了什么(>.<)我很乐意提供更多的信息,澄清等,如果我错过了重要的东西!
谢谢!
Using System.Xml.Linq:
var items = XElement.Load(fileStream)
.Elements("Item")
.Select(itemXml => new {
id = (int)itemXml.Element("id").Value,
name = itemXml.Element("name").Value
})
.ToArray();
使用xpath。
XmlNodeList nodes = xml.SelectNodes("Items/Item");
foreach ( XmlNode node in nodes )
{
int id = int.Parse(node.SelectSingleNode("id").InnerText);
}