2

[C# .NET 4.0 WinForm LINQ]

としてプロジェクトに追加した XML ファイルがありましたContentが、実行可能ファイルでコンパイルされるように内部の埋め込みリソースにする必要があり、アプリのインストール/展開パッケージを作成する必要はありません。 .

ただし、LINQ を使用して XML ファイルをクエリする既存のコードがありますが、ファイルを埋め込みリソースにしたため、動作しません。XML ファイルがコンテンツ リソースである場合と比べて埋め込みリソースである場合、XML ファイルをクエリできるようにするには、どうすればよいですか? いくつか見ました

XML ファイルに対してクエリを実行したら、結果をループしてリスト ボックスに読み込みます。XML ファイルが設定されているときに XML ファイルを照会するために使用しているコードとContent、リストボックスに追加するループを次に示します。

var computers = from e in XElement.Load(@"MyXML.xml").Elements("computer")
        select (string)e.Element("name");

foreach (var c in computers)
{
    if (!IsNullOrEmpty(computer))
    {
        lstComputer.BeginUpdate();
        lstComputer.Items.Add(computer);
        lstComputer.EndUpdate();
    }
}

この例のように、アセンブリを使用してファイルを文字列に読み込む他の例を見てきました...これは私がしなければならないことですか? 私の内部のノブをさらに明らかにすることはできませんが、その場合、上記のリンクの例は、リストボックスにアイテムを追加できるようにループできる区切り文字列を返しますか?

ありがとう...

4

2 に答える 2

3

埋め込みリソースをストリームとして開きます。

XElement doc;
using (var stream = typeof(SomeTypeInTheAssembly).Assembly
                        .GetManifestResourceStream("MyXML.xml"))
{
    doc = XElement.Load(stream);
}

中間の文字列表現を経由する必要はありません。

于 2013-05-22T12:53:36.387 に答える
0

Jon Skeet の回答に基づいて、 Assembly.GetExecutingAssembly() を使用して少し簡単にすることができます。

using System.Reflection;

XElement doc;
using (var stream = Assembly.GetExecutingAssembly().
                    .GetManifestResourceStream("MyNameSpace.MyXML.xml"))
{
    doc = XElement.Load(stream);
}
于 2015-02-03T12:41:22.530 に答える