ホームページ バックエンド開発 XML/RSS チュートリアル カスタム XML 動的構成プログラムのサンプル コード共有

カスタム XML 動的構成プログラムのサンプル コード共有

Mar 22, 2017 pm 04:46 PM

概要

1 プログラム開発を行う際には、次の 2 つの基本モジュールをよく使用します

1> ページングパラメータ、メールパラメータなどのプログラムの基本パラメータを設定します

2> -駆動型開発、つまり、テーブル データに判断ロジックを組み込む

2 これら 2 つの基本的なアプリケーションには、次の要件があります。

1> 構成可能であること。 、システムケースを再起動せずに、パラメータを変更します。

3> 使い方は簡単です。

プログラムの主な機能

1> ページングパラメータ、電子メールパラメータなどのプログラムの基本パラメータを設定します。

----対応するエンティティにXMLの構成情報を自動的に追加します。

2> テーブル駆動開発に基づいて開発する場合、テーブルデータにいくつかの判定ロジックが配置されます。

----XML 内の Dctionary データを対応するエンティティに自動的にロードします。ただし、このメソッドは引き続き最適化する必要があり、現在は辞書のロードのみをサポートしており、より複雑な構造をサポートする必要があります。

メインコード

1 まず、コード内でエンティティを定義し、参照します。

Example

public class AppSetting
{
    public string PageSize;
    public string WebUrl;
 
    public Dictionary<string, string> IsPartialPayment;
    public Dictionary<string, string> EntityCurrency;
}
ログイン後にコピー

2 は、対応する XML ファイルを定義します。 このうち、プログラムの基本的な構成情報は、AppSettings

ノードの下に設定されます。

<?xml version="1.0" encoding="utf-8" ?>
<settings>
  <DictSettings>
    <Dict name="AppSettings" >
      <add key="PageSize" value="2"></add>
      <add key="WebUrl" value="www.baidu.com"></add>
    </Dict>
    <Dict name="IsPartialPayment">
      <add key="TTPART" value="true"></add>
      <add key="TT50/50" value="true"></add>
    </Dict>
    <Dict name="EntityCurrency">
      <add key="China" value="CNY"></add>
      <add key="HQ" value="USD"></add>
      <add key="Default" value="USD"></add>
    </Dict>
  </DictSettings>
</settings>
ログイン後にコピー

3 最後に、2 の XML 構成情報を 1 のエンティティにロードするには、XML ロード コードの一部が必要です。

public static class ConfigManager
    {
        public static AppSetting AppSetting;
        private static string xmlPath;
 
        public static Dictionary<string, Dictionary<string, string>> DictAppSettings = new Dictionary<string, Dictionary<string, string>>();
        static ConfigManager()
        {
            xmlPath = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory.ToString(), "AppConfig.xml");
            LoadSettings(xmlPath);
        }
 
        private static void LoadSettings(string path)
        {
            DictAppSettings.Clear();
            //加载XML中所有的key,value,并转换成Dictionary对象
            XmlNode dictRootNode = FileHelper.GetXMLNode(path, "/settings/DictSettings");
            foreach (XmlNode dictType in dictRootNode.ChildNodes)
            {
                Dictionary<string, string> dict = new Dictionary<string, string>();
                foreach (XmlNode dictItem in dictType.ChildNodes)
                {
                    dict.Add(dictItem.Attributes["key"].Value.Trim(), dictItem.Attributes["value"].Value.Trim());
                }
                DictAppSettings.Add(dictType.Attributes["name"].Value.Trim(), dict);
            }
 
            //将Dictionary 对象转换成实体的字段和对应dctionary上
            var serializer = new JavaScriptSerializer();
            //将AppSettings转成json
            string jAppSetting = serializer.Serialize(DictAppSettings["AppSettings"]);
            DictAppSettings.Remove("AppSettings");
            //将除AppSettings中的信息转成json
            string jDict = serializer.Serialize(DictAppSettings);
            //将AppSettings和其它的Dictionary 加载到对应的实体中去。
            string json = string.Format("{0},{1}", jAppSetting.Remove(jAppSetting.Length - 1), jDict.Remove(0, 1));
            AppSetting = serializer.Deserialize<AppSetting>(json);
 
            //当修改文件时,重新加载XML
            FileHelper.CacheDependencyFile(path, CacheRemovedCallback);
        }
 
        private static void CacheRemovedCallback(string key, object value, CacheItemRemovedReason reason)
        {
            //此方法来自Fish.Li
            string xmlFilePath = (string)value;
 
            // 由于事件发生时,文件可能还没有完全关闭,所以只好让程序稍等。
            System.Threading.Thread.Sleep(3000);
 
            LoadSettings(xmlFilePath);
        }
    }
 
    public static class FileHelper
    {
        public static XmlNode GetXMLNode(string path, string xPath)
        {
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(path);
            return xmlDoc.SelectSingleNode(xPath);
        }
 
        public static void CacheDependencyFile(string path, CacheItemRemovedCallback removedCallback)
        {
            CacheDependency dep = new CacheDependency(path);
            HttpRuntime.Cache.Insert(Guid.NewGuid().ToString(), path, dep,
                Cache.NoAbsoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable, removedCallback);
        }
    }
ログイン後にコピー

最終的な効果

1 プログラムの初回実行時に、対応する設定情報が出力されます

カスタム XML 動的構成プログラムのサンプル コード共有2 一部のパラメータが変更された場合、再起動せずに最新の情報を取得できます。パラメータを 3 秒間変更した後、ページを更新してください

以上がカスタム XML 動的構成プログラムのサンプル コード共有の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Netflix でカスタム アバターをすばやくセットアップする方法 Netflix でカスタム アバターをすばやくセットアップする方法 Feb 19, 2024 pm 06:33 PM

Netflix のアバターは、ストリーミング ID を視覚的に表現したものです。ユーザーはデフォルトのアバターを超えて自分の個性を表現できます。 Netflix アプリでカスタム プロフィール写真を設定する方法については、この記事を読み続けてください。 Netflix でカスタム アバターをすばやく設定する方法 Netflix には、プロフィール写真を設定する機能が組み込まれていません。ただし、ブラウザに Netflix 拡張機能をインストールすることでこれを行うことができます。まず、Netflix 拡張機能のカスタム プロフィール画像をブラウザにインストールします。 Chrome ストアで購入できます。拡張機能をインストールした後、ブラウザで Netflix を開き、アカウントにログインします。右上隅にあるプロフィールに移動し、をクリックします

PowerPoint を使用して XML ファイルを開くことはできますか? PowerPoint を使用して XML ファイルを開くことはできますか? Feb 19, 2024 pm 09:06 PM

XML ファイルは PPT で開くことができますか? XML、Extensible Markup Language (Extensible Markup Language) は、データ交換とデータ ストレージで広く使用されている汎用マークアップ言語です。 HTML と比較して、XML はより柔軟であり、独自のタグとデータ構造を定義できるため、データの保存と交換がより便利で統一されます。 PPT (PowerPoint) は、プレゼンテーションを作成するために Microsoft によって開発されたソフトウェアです。包括的な方法を提供します。

Python で XML データを CSV 形式に変換する Python で XML データを CSV 形式に変換する Aug 11, 2023 pm 07:41 PM

Python の XML データを CSV 形式に変換する XML (ExtensibleMarkupLanguage) は、データの保存と送信に一般的に使用される拡張可能なマークアップ言語です。 CSV (CommaSeparatedValues) は、データのインポートとエクスポートに一般的に使用されるカンマ区切りのテキスト ファイル形式です。データを処理するとき、分析や処理を容易にするために、XML データを CSV 形式に変換する必要がある場合があります。 Pythonは強力です

Python でベン図を作成およびカスタマイズするにはどうすればよいですか? Python でベン図を作成およびカスタマイズするにはどうすればよいですか? Sep 14, 2023 pm 02:37 PM

ベン図は、セット間の関係を表すために使用される図です。ベン図を作成するには、matplotlib を使用します。 Matplotlib は、対話型のチャートやグラフを作成するために Python で一般的に使用されるデータ視覚化ライブラリです。インタラクティブな画像やグラフの作成にも使用されます。 Matplotlib は、チャートやグラフをカスタマイズするための多くの関数を提供します。このチュートリアルでは、ベン図をカスタマイズするための 3 つの例を説明します。 Example の中国語訳は次のとおりです: Example これは 2 つのベン図の交差を作成する簡単な例です。最初に、必要なライブラリをインポートし、ベンをインポートしました。次に、データセットを Python セットとして作成し、その後「venn2()」関数を使用して

Eclipseでショートカットキー設定をカスタマイズする方法 Eclipseでショートカットキー設定をカスタマイズする方法 Jan 28, 2024 am 10:01 AM

Eclipse でショートカット キーの設定をカスタマイズするにはどうすればよいですか?開発者にとって、ショートカット キーをマスターすることは、Eclipse でコーディングする際の効率を向上させるための鍵の 1 つです。強力な統合開発環境として、Eclipse は多くのデフォルトのショートカット キーを提供するだけでなく、ユーザーが独自の好みに応じてショートカット キーをカスタマイズすることもできます。この記事では、Eclipseでショートカットキーの設定をカスタマイズする方法と具体的なコード例を紹介します。 Eclipseを開く まず、Eclipseを開いて次のように入力します。

ediusカスタム画面レイアウトの操作手順 ediusカスタム画面レイアウトの操作手順 Mar 27, 2024 pm 06:50 PM

1. 下の図はediusのデフォルトの画面レイアウトです EDIUSのデフォルトのウィンドウレイアウトは横レイアウトのため、シングルモニタ環境では多くのウィンドウが重なってプレビューウィンドウがシングルウィンドウモードになります。 2. メニューバーの[表示]から[デュアルウィンドウモード]を有効にすると、プレビューウィンドウに再生ウィンドウと録音ウィンドウを同時に表示できます。 3. [表示メニューバー > ウィンドウレイアウト > 一般] でデフォルトの画面レイアウトに戻すことができます。また、ウィンドウをドラッグして好みのレイアウトにし、[表示 > ウィンドウ レイアウト > 現在のレイアウトを保存 > 新規作成] をクリックすると、自分に合ったレイアウトをカスタマイズして、よく使う画面レイアウトとして保存することもできます。ポップアップ [現在のレイアウトを保存] レイアウト] 小さなウィンドウにレイアウト名を入力し、OK をクリックします

Python は XML 内の特殊文字とエスケープ シーケンスを解析します Python は XML 内の特殊文字とエスケープ シーケンスを解析します Aug 08, 2023 pm 12:46 PM

Python は XML 内の特殊文字とエスケープ シーケンスを解析します XML (eXtensibleMarkupLanguage) は、異なるシステム間でデータを転送および保存するために一般的に使用されるデータ交換形式です。 XML ファイルを処理する場合、特殊文字やエスケープ シーケンスが含まれる状況に遭遇することが多く、これにより解析エラーやデータの誤解が生じる可能性があります。したがって、Python を使用して XML ファイルを解析する場合は、これらの特殊文字とエスケープ シーケンスの処理方法を理解する必要があります。 1. 特殊文字と

C# 開発で XML および JSON データ形式を処理する方法 C# 開発で XML および JSON データ形式を処理する方法 Oct 09, 2023 pm 06:15 PM

C# 開発で XML および JSON データ形式を処理する方法には、特定のコード サンプルが必要です。現代のソフトウェア開発では、XML と JSON の 2 つのデータ形式が広く使用されています。 XML (Extensible Markup Language) はデータの保存と送信に使用されるマークアップ言語であり、JSON (JavaScript Object Notation) は軽量のデータ交換形式です。 C# 開発では、XML と JSON データの処理と操作が必要になることがよくありますが、この記事では、C# を使用してこれら 2 つのデータ形式を処理し、添付する方法に焦点を当てます。

See all articles