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