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 に答える