-1

バッチ ファイルによってトリガーされるコンソール アプリケーションがあります。アプリケーションは、実行のために XML ファイルから構成をロードする必要があります... バッチ ファイルがパラメーター「Env1」をアプリケーションに送信するとします。XML ファイル形式を以下に示します。

<EnvironmentCollection>
    <Environment>
        <Name>Env1</Name>
        <Url>....</Url>
    </Environment>
    <Environment>
        <Name>Env2</Name>
        <Url>....</Url>
    </Environment>
 </EnvironmentCollection>

どんな助けでも大歓迎ですありがとう

4

4 に答える 4

1
XDocument xDoc = XDocument.Load(file);
var dict = xDoc.Descendants("Environment")
                .ToDictionary(x => x.Element("Name").Value, 
                              x => x.Element("Url").Value);

そして使用法は

var url = dict["Env1"];
于 2012-09-18T17:51:44.190 に答える
0

まず、EnvironmentCollectionクラスをシリアル化可能としてマークします。次に、次のコードを使用して、xmlを逆シリアル化してオブジェクトに戻すことができます。

    /// <summary>
    /// Deserializes xml file to object
    /// </summary>
    /// <param name="filePath"></param>
    /// <returns></returns>
    public static object DeSerializeFromXML(string filePath, Type type)
    {
        object data = null;
        System.IO.Stream stream = null;
        try
        {
            stream = System.IO.File.Open(filePath, System.IO.FileMode.Open);
            System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(type);
            data = x.Deserialize(new System.Xml.XmlTextReader(stream));
            stream.Close();
            stream.Dispose();
        }
        catch (Exception ex)
        {
            try
            {
                stream.Close();
                stream.Dispose();
            }
            catch (Exception)
            {
            }
            throw new Exception(ex.Message);
        }
        return data;
    }

この関数は次のように使用できます。

    EnvironmentCollection col = (EnvironmentCollection)DeSerializeFromXML("myFile.xml", typeof(EnvironmentCollection));
于 2012-09-18T17:32:48.550 に答える
0

多くのアプローチがあります。xmlのシリアル化について話します。これには、xmlを処理できるC#のオブジェクトモデルが必要です。または、オブジェクトモデルからxmlを作成します。http://www.dotnetjohn.com/articles.aspx? articleid = 173

非常に単純な別のアプローチは、xmlドキュメントをxmldocumentオブジェクトにロードし、クエリを実行することです。http: //csharp.net-tutorials.com/xml/using-xpath-with-the-xmldocument-class/

チュートリアルへのリンクを提供しました。質問から、完全なソリューションだけでなく、可能性についての背景知識を使用できると思います。

于 2012-09-18T17:35:19.587 に答える
0

構成を Xmlにロードする理由はまったくありません。.Net には、厳密に型指定され、厳密に名前が付けられた方法で構成を操作できる構成クラスがあります。単純なキーと値のエントリに appSettings を使用するか、独自のカスタム構成セクションを簡単に定義できます (リンクの例を参照)。

そうは言っても、codeplexの構成セクション デザイナーツールを使用すると、作業がずっと楽になります。Visual Studio (2010 を含む) のグラフィック アドオンを介してセクションを定義することができ、カスタム セクションのクラス定義をそれ自体で生成します。それを試してみてください、それは素晴らしいです:-)

于 2012-09-18T17:59:38.603 に答える