/// <summary>名前解決(URL)</summary> /// <param name="name">名前</param> /// <param name="url">URL</param> /// <param name="timeout">タイムアウト</param> /// <param name="props">プロパティ</param> internal void NameResolutionProtocolUrl(string name, out string url, out int timeout, out Dictionary <string, string> props) { // 初期化 url = ""; timeout = -1; props = new Dictionary <string, string>(); // 属性チェック用 XmlNode xmlNode = null; // Transmissionタグを取得 XmlElement xmlTransmission = this.XMLTMD_Protocol.GetElementById(name); // チェック if (xmlTransmission == null) { // Transmissionタグがない場合 // 例外をスロー throw new FrameworkException( FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[0], String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[1], String.Format(FrameworkExceptionMessage.NAMESERVICE_XML_FORMAT_ERROR_tm, name))); } else { // Transmissionタグがある場合 #region URL // url属性 xmlNode = xmlTransmission.Attributes[FxLiteral.XML_TM_PROTOCOL_ATTR_URL]; if (xmlNode == null) { // url属性なしの場合 // url_ref属性 xmlNode = xmlTransmission.Attributes[FxLiteral.XML_TM_PROTOCOL_ATTR_URL_REF]; if (xmlNode == null) { // url_ref属性なしの場合 // 例外をスロー throw new FrameworkException( FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[0], System.String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[1], System.String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR_url1, name))); } else { // url_ref属性ありの場合 string url_ref = xmlNode.Value; if (this.XMLTMD_Protocol.GetElementById(url_ref) == null) { // IDFERからUrlタグを発見できない場合 // 例外をスロー throw new FrameworkException( FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[0], System.String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[1], System.String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR_url2, url_ref))); } else { // IDFERからUrlタグを発見できた場合 // value属性 xmlNode = this.XMLTMD_Protocol.GetElementById(url_ref).Attributes[FxLiteral.XML_CMN_ATTR_VALUE]; if (xmlNode == null) { // value属性なしの場合 // 例外をスロー throw new FrameworkException( FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[0], System.String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[1], System.String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR_url3, url_ref))); } else { // value属性ありの場合 // urlを取得 url = xmlNode.Value; if (url == "") { // urlが空の場合 // 例外をスロー throw new FrameworkException( FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[0], System.String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[1], System.String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR_url4, FxLiteral.XML_TM_PROTOCOL_TAG_URL, url_ref))); } } } } } else { // url属性ありの場合 // urlを取得 url = xmlNode.Value; if (url == "") { // urlが空の場合 // 例外をスロー throw new FrameworkException( FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[0], System.String.Format( FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[1], System.String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR_url4, FxLiteral.XML_TM_TAG_TRANSMISSION, name))); } } #endregion #region タイムアウト // timeout属性 xmlNode = xmlTransmission.Attributes[FxLiteral.XML_TM_PROTOCOL_ATTR_TIMEOUT]; if (xmlNode == null) { // timeout属性なしの場合 → なにもしない。 } else { // timeout属性ありの場合 string timeoutString = xmlNode.Value; // チェック(数値か) if (int.TryParse(timeoutString, out timeout)) { // timeout = int.Parse(timeoutString); } else { // timeout値のフォーマットエラー // 例外をスロー throw new FrameworkException( FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[0], String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[1], String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR_to, name))); } } #endregion #region プロパティ // prop_ref属性 xmlNode = xmlTransmission.Attributes[FxLiteral.XML_TM_PROTOCOL_ATTR_PROP_REF]; if (xmlNode == null) { // prop_ref属性なしの場合 → なにもしない。 } else { // prop_ref属性ありの場合 string prop_ref = xmlNode.Value; if (this.XMLTMD_Protocol.GetElementById(prop_ref) == null) { // IDFERからPropタグを発見できない場合 // 例外をスロー throw new FrameworkException( FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[0], String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[1], String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR_prop1, prop_ref))); } else { // IDFERからPropタグを発見できた場合 // value属性 xmlNode = this.XMLTMD_Protocol.GetElementById(prop_ref).Attributes[FxLiteral.XML_CMN_ATTR_VALUE]; // プロパティ文字列を取得 if (xmlNode == null) { // value属性なしの場合 // 例外をスロー throw new FrameworkException( FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[0], String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR[1], String.Format(FrameworkExceptionMessage.PRT_NAMESERVICE_XML_FORMAT_ERROR_prop2, prop_ref))); } else { // value属性ありの場合 // プロパティ文字列をディクショナリに変換 string propStr = xmlNode.Value; props = StringVariableOperator.GetPropsFromPropString(propStr); } } } #endregion } }
public static Dictionary <string, string> GetPropsFromPropString(string propString) { return(StringVariableOperator.GetPropsFromPropString(propString)); }