如何读取XML文件

时间:2016-03-21 15:29:14

标签: c# xml

我为纸牌游戏提供以下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

我知道我不应该要求完整的解决方案,但我只是难倒。将这件事告诉我的任何帮助都会很棒。

2 个答案:

答案 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);