从Windows Phone 8.1中的XML文件中读取数据

时间:2016-03-16 14:09:07

标签: c# xml windows-phone-8.1

家伙!我正在开发一个Windows Phone 8.1应用程序,我想从XML文件中读取一些内容。我知道如何从像这样的结构中读取数据

<strings>
    <string01>Some text.</string01>
    <string02>Another text.</string02>
</strings>

声明一个带字符串的类

public class TextStrings {
    public string string01 { get; set; }
    public string string02 { get; set; }
}

并像这样使用XmlSerializer

XmlSerializer deserializer = new XmlSerializer(typeof(TextStrings), new XmlRootAttribute("strings"));
string filename = "TextData.xml";
StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(@"ms-appx:///" + filename));
TextReader reader = new StreamReader(await file.OpenStreamForReadAsync());
object obj = deserializer.Deserialize(reader);
TextStrings xmlData = (TextStrings)obj;

然后我将文本插入TextBlock写入

txtBlock.Text = xmlData.string01;

现在我选择一个具有这种结构的XML文件

<header>
    <book name="Book 01" chapters="10">
        <chapter n="1">
            <verse n="1">Some text.</verse>
            <verse n="2">More text.</verse>
            ...
        </chapter>
        ...
    </book>
    ...
</header>

因此,例如,我想在TextBlock中插入Book 01第1章的第2节。我怎么能像以前一样使用XmlSerializer呢?或者还有另一种方式吗?因为标签是相同的并且具有这些属性 - “n”,“book”,“chapter”。

你能写一些代码吗?因为我还在学习所有这些东西,所以如果不看代码本身就很难理解。谢谢!

1 个答案:

答案 0 :(得分:1)

知道了:

XmlDocument doc = new XmlDocument();
doc.LoadXml(XDocument.Load("XMLFile.xml").ToString());
IXmlNode mynode = doc.SelectSingleNode("/header/book[@name='Book 01']/chapter[@n='1']/verse[@n='2']");
string mytext = mynode.InnerText;
MyTextBlock.Text = mytext;

完美无缺!