家伙!我正在开发一个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”。
你能写一些代码吗?因为我还在学习所有这些东西,所以如果不看代码本身就很难理解。谢谢!
答案 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;
完美无缺!