0

XML データを動的に読み取るにはどうすればよいですか? C# コードをできるだけ汎用的かつ動的に管理するにはどうすればよいですか? 要件に基づいて、Xml にさらにフォルダー パスを追加する必要があります。これは、書き直さなければならない方法で、記述されたコードに影響を与えるべきではありません。

サンプルとして XML の一部を指定すると、次のようになります。

<?xml version="1.0" standalone="yes"?>
  <HOSTS>
   <Host id = '1'>
     <Extension>txt</Extension>
     <FolderPath>C:/temp</FolderPath>
   </Host>
   <Host id = '2'>
     <Extension>rar</Extension>
     <FolderPath>C:/Sample</FolderPath>
   </Host>
 </HOSTS>

ホスト ID を動的に読み取るにはどうすればよいですか? 私にはどのような可能性がありますか?

4

5 に答える 5

6

はい - 実際、これは C# では非常に一般的なタスクです。

これに対処するには、いくつかの方法があります。

  • XPathなどのライブラリを使用して XML 値を読み取る
  • XMLをオブジェクトにデシリアライズする
  • XMLDocumentオブジェクトにロードする
  • LINQ to XML (推奨)

これらのリンクは正しい方向を示しているはずです。

于 2012-05-28T17:31:00.737 に答える
1

そのサンプル xml から xsd スキームを生成します。必要に応じて変更し、 xsd.exeを使用して厳密に型指定された C# クラスを生成します。

于 2012-05-28T17:32:13.873 に答える
0

この場合の最善の方法 (私の意見では) は、厳密に型指定されたクラスに XML シリアル化を使用することです。Attributesを使用してプロセスを制御できます。

var serializer = new XmlSerializer(typeof(Hosts));
var hosts = (Hosts)serializer.Deserialize(new StringReader(str));

...

[XmlRoot("HOSTS")]
public class Hosts : List<Host> {}

public class Host {
    [XmlAttribute("id")]
    public int Id { get; set; }

    public string Extension { get; set; }

    public string FolderPath { get; set; }
}
于 2012-05-28T19:20:26.067 に答える