【问题标题】:load xml file and read tag windows store app c#加载xml文件并读取标签windows store app c#
【发布时间】:2013-08-30 14:19:55
【问题描述】:

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

【问题讨论】:

  • 看看使用 LINQ to XML(XElement、XDocument 等)。

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


【解决方案1】:

正如 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");

【讨论】:

  • 缺少根元素。为什么?
【解决方案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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 2013-12-21
    • 1970-01-01
    相关资源
    最近更新 更多