加载xml文件并读取标记windows store app c#

时间:2013-08-30 14:19:55

标签: xml serialization windows-8 windows-store-apps winrt-xaml

我想在我的应用中加载我的xml文件,并从我的xml中读取特定的标签。有人能帮我吗?我尝试了几件事,但我得到的只是完整的xml文本,而不是特定的标签。

这是代码:

 try
 {
     StorageFolder storageFolder = Package.Current.InstalledLocation;
     StorageFile storageFile = await storageFolder.GetFileAsync("players2.xml");

     XmlTextBlock.Text = await FileIO.ReadTextAsync(storageFile, Windows.Storage.Streams.UnicodeEncoding.Utf8);
 }
 catch (Exception ex)
 {
     XmlTextBlock.Text = ex.Message;
 }

我的xml是:

<player>
<name>Ricardo Ferreira Rodrigues</name>
<shirtnumber>1</shirtnumber>
</player>

我想在txtname和txtshirtnumber中看到结果。有人可以帮忙吗?

2 个答案:

答案 0 :(得分:2)

正如Jon评论的那样,你应该阅读LINQ to XML。它是在.NET中处理XML结构的最好(最简单和最强大)的方法。

您的文档非常简单,因此查询也很简单:

// parse the xml into XDocument instance
var doc = XDocument.Parse(XmlTextBlock.Text);

// query for <name> and <shirtnumber> and assign values to proper textboxes
txtname.Text = (string)doc.Root.Element("name");
txtshirtnumber.Text = (string)doc.Root.Element("shirtnumber");

答案 1 :(得分:2)

如果是我,我会将XML直接反序列化为类。

How to Deserialize XML document

string path = "file.xml";
StreamReader reader = new StreamReader(path);

XmlSerializer serializer = new XmlSerializer(typeof(MyClass));
var x = (MyClass)serializer.Deserialize(reader);

reader.Close();

C# XML Serialization/Deserialization

[XmlRoot("Document", Namespace = "")]
public partial class MyClass
{
    [XmlAttribute("Id")]
    public string Id { get; set; }

    [XmlElement("Name")]
    public string Name { get; set; }
}

How to de-serialize XML with many child nodes

http://www.stepupframeworks.com/Home/products/xml-object-mapping-xom/