2

我想在我的应用程序中加载我的 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 中查看结果。有人可以帮忙吗?

4

2 回答 2

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");
于 2013-08-30T14:55:31.697 回答
2

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

如何反序列化 XML 文档

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 序列化/反序列化

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

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

如何反序列化具有许多子节点的 XML

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

于 2013-08-30T18:54:16.087 回答