我为纸牌游戏提供以下XML结构。我想将卡片标题和说明加载到两个阵列中,我可以用它来随机化卡片。
<Cards>
<CardTitles>
<Title>Some Title</Title>
.
.
.
.
.
</CardTitles>
<CardDesc>
<Desc>Some description</Desc>
</CardDesc>
</Cards>
但无论我做什么或我编写什么代码,我都无法从正确的标签中获取实际文本。我得到的最接近的是这个例子:https://msdn.microsoft.com/en-us/library/system.xml.xmlreader.readsubtree(v=vs.110).aspx
我知道我不应该要求完整的解决方案,但我只是难倒。将这件事告诉我的任何帮助都会很棒。
答案 0 :(得分:1)
假设您在C:\ temp中有一个名为sample.xml的xml文件,您可以使用LINQ To XML:
XElement x = XElement.Load (@"c:\temp\Sample.xml");
IEnumerable<string> titles = from title in x.Element("CardTitles").Elements()
select title.Value;
IEnumerable<string> descriptions = from description in x.Element("CardDesc").Elements()
select description.Value;
答案 1 :(得分:-1)
您可以使用更简单,更直接的XmlSerializer,而不是使用XmlReader路由。
https://msdn.microsoft.com/en-us/library/58a18dwa(v=vs.110).aspx
你会有这样的事情:
<Cards>
<CardTitles>
<Title>Some Title</Title>
</CardTitles>
<CardDesc>
<Desc>Some description</Desc>
</CardDesc>
</Cards>
.Net Classes
public class Cards {
public CardTitles CardTitles;
public CardDesc CardDesc;
}
public class CardTitles {
public String Title;
}
public class CardDesc {
public String Desc;
}
然后使用XmlSerializer.Deserialize
方法。
XmlSerializer xmlSerializer = new XmlSerializer(typeof(Cards));
StringReader inputStrReader = new StringReader(inputString);
Cards cards = (Cards)xmlSerializer.Deserialize(inputStrReader);