1 // ================================================================================================
3 // XMLの処理に関するユーティリティクラスソース。</summary>
5 // <copyright file="XmlUtils.cs" company="honeplusのメモ帳">
6 // Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
9 // ================================================================================================
11 namespace Honememo.Utilities
18 /// XMLの処理に関するユーティリティクラスです。
20 public static class XmlUtils
25 /// ノードが<c>null</c>の場合に空の文字列を返す<see cref="XmlNode.InnerText"/>。
27 /// <param name="node"><see cref="XmlNode.InnerText"/>するノード。<c>null</c>も可。</param>
28 /// <returns>渡されたノードを<see cref="XmlNode.InnerText"/>した結果。<c>null</c>の場合には空の文字列。</returns>
29 public static string InnerText(XmlNode node)
31 return XmlUtils.InnerText(node, String.Empty);
35 /// ノードが<c>null</c>の場合に指定された文字列を返す<see cref="XmlNode.InnerText"/>。
37 /// <param name="node"><see cref="XmlNode.InnerText"/>するノード。<c>null</c>も可。</param>
38 /// <param name="nullStr">渡されたノードが<c>null</c>の場合に返される文字列。<c>null</c>も可。</param>
39 /// <returns>渡されたノードを<see cref="XmlNode.InnerText"/>した結果。<c>null</c>の場合には指定された文字列。</returns>
40 public static string InnerText(XmlNode node, string nullStr)
47 return StringUtils.DefaultString(node.InnerText, nullStr);
51 /// ノードが<c>null</c>の場合に空の文字列を返す<see cref="XmlNode.InnerXml"/>。
53 /// <param name="node"><see cref="XmlNode.InnerXml"/>するノード。<c>null</c>も可。</param>
54 /// <returns>渡されたノードを<see cref="XmlNode.InnerXml"/>した結果。<c>null</c>の場合には空の文字列。</returns>
55 public static string InnerXml(XmlNode node)
57 return XmlUtils.InnerXml(node, String.Empty);
61 /// ノードが<c>null</c>の場合に指定された文字列を返す<see cref="XmlNode.InnerXml"/>。
63 /// <param name="node"><see cref="XmlNode.InnerXml"/>するノード。<c>null</c>も可。</param>
64 /// <param name="nullStr">渡されたノードが<c>null</c>の場合に返される文字列。<c>null</c>も可。</param>
65 /// <returns>渡されたノードを<see cref="XmlNode.InnerXml"/>した結果。<c>null</c>の場合には指定された文字列。</returns>
66 public static string InnerXml(XmlNode node, string nullStr)
73 return StringUtils.DefaultString(node.InnerXml, nullStr);
77 /// ノードが<c>null</c>の場合に空の文字列を返す<see cref="XmlNode.OuterXml"/>。
79 /// <param name="node"><see cref="XmlNode.OuterXml"/>するノード。<c>null</c>も可。</param>
80 /// <returns>渡されたノードを<see cref="XmlNode.OuterXml"/>した結果。<c>null</c>の場合には空の文字列。</returns>
81 public static string OuterXml(XmlNode node)
83 return XmlUtils.OuterXml(node, String.Empty);
87 /// ノードが<c>null</c>の場合に指定された文字列を返す<see cref="XmlNode.OuterXml"/>。
89 /// <param name="node"><see cref="XmlNode.OuterXml"/>するノード。<c>null</c>も可。</param>
90 /// <param name="nullStr">渡されたノードが<c>null</c>の場合に返される文字列。<c>null</c>も可。</param>
91 /// <returns>渡されたノードを<see cref="XmlNode.OuterXml"/>した結果。<c>null</c>の場合には指定された文字列。</returns>
92 public static string OuterXml(XmlNode node, string nullStr)
99 return StringUtils.DefaultString(node.OuterXml, nullStr);
107 /// 指定された文字列をXMLエンコードする。
109 /// <param name="s">エンコードする文字列。</param>
110 /// <returns>エンコードした文字列。</returns>
111 /// <exception cref="ArgumentNullException">文字列が<c>null</c>。</exception>
113 /// 使う場所によってはエンコードが必要ない文字もあるが、汎用のため常時
114 /// <, >, ", ', & の5文字を変換する。
116 public static string XmlEncode(string s)
118 return Validate.NotNull(s, "s").Replace("&", "&").Replace("<", "<")
119 .Replace(">", ">").Replace("\"", """).Replace("\'", "'");
123 /// 指定された文字列をXMLデコードする。
125 /// <param name="s">エンコードされた文字列。</param>
126 /// <returns>エンコードを解除した文字列。</returns>
127 /// <exception cref="ArgumentNullException">文字列が<c>null</c>。</exception>
129 /// <, >, ", ', & の5文字を変換する。
131 public static string XmlDecode(string s)
133 return Validate.NotNull(s, "s").Replace("<", "<").Replace(">", ">")
134 .Replace(""", "\"").Replace("'", "\'").Replace("&", "&");