OSDN Git Service

Wikipedia翻訳支援ツール Ver1.10時点のソース
[wptscs/wpts.git] / HmLib / Utilities / XmlUtils.cs
1 // ================================================================================================
2 // <summary>
3 //      Xmlの処理に関するユーティリティクラスソース。</summary>
4 //
5 // <copyright file="XmlUtils.cs" company="honeplusのメモ帳">
6 //      Copyright (C) 2011 Honeplus. All rights reserved.</copyright>
7 // <author>
8 //      Honeplus</author>
9 // ================================================================================================
10
11 namespace Honememo.Utilities
12 {
13     using System;
14     using System.Text;
15     using System.Xml;
16
17     /// <summary>
18     /// Xmlの処理に関するユーティリティクラスです。
19     /// </summary>
20     public static class XmlUtils
21     {
22         #region null値許容メソッド
23
24         /// <summary>
25         /// ノードが<c>null</c>の場合に空の文字列を返す<c>InnerText</c>。
26         /// </summary>
27         /// <param name="node"><c>InnerText</c>するノード。<c>null</c>も可。</param>
28         /// <returns>渡されたノードを<c>InnerText</c>した結果。<c>null</c>の場合には空の文字列。</returns>
29         public static string InnerText(XmlNode node)
30         {
31             return XmlUtils.InnerText(node, String.Empty);
32         }
33
34         /// <summary>
35         /// ノードが<c>null</c>の場合に指定された文字列を返す<c>InnerText</c>。
36         /// </summary>
37         /// <param name="node"><c>InnerText</c>するノード。<c>null</c>も可。</param>
38         /// <param name="nullStr">渡されたノードが<c>null</c>の場合に返される文字列。<c>null</c>も可。</param>
39         /// <returns>渡されたノードを<c>InnerText</c>した結果。<c>null</c>の場合には指定された文字列。</returns>
40         public static string InnerText(XmlNode node, string nullStr)
41         {
42             if (node == null)
43             {
44                 return nullStr;
45             }
46
47             return StringUtils.DefaultString(node.InnerText, nullStr);
48         }
49
50         /// <summary>
51         /// ノードが<c>null</c>の場合に空の文字列を返す<c>InnerXml</c>。
52         /// </summary>
53         /// <param name="node"><c>InnerXml</c>するノード。<c>null</c>も可。</param>
54         /// <returns>渡されたノードを<c>InnerXml</c>した結果。<c>null</c>の場合には空の文字列。</returns>
55         public static string InnerXml(XmlNode node)
56         {
57             return XmlUtils.InnerXml(node, String.Empty);
58         }
59
60         /// <summary>
61         /// ノードが<c>null</c>の場合に指定された文字列を返す<c>InnerXml</c>。
62         /// </summary>
63         /// <param name="node"><c>InnerXml</c>するノード。<c>null</c>も可。</param>
64         /// <param name="nullStr">渡されたノードが<c>null</c>の場合に返される文字列。<c>null</c>も可。</param>
65         /// <returns>渡されたノードを<c>InnerXml</c>した結果。<c>null</c>の場合には指定された文字列。</returns>
66         public static string InnerXml(XmlNode node, string nullStr)
67         {
68             if (node == null)
69             {
70                 return nullStr;
71             }
72
73             return StringUtils.DefaultString(node.InnerXml, nullStr);
74         }
75
76         /// <summary>
77         /// ノードが<c>null</c>の場合に空の文字列を返す<c>OuterXml</c>。
78         /// </summary>
79         /// <param name="node"><c>OuterXml</c>するノード。<c>null</c>も可。</param>
80         /// <returns>渡されたノードを<c>OuterXml</c>した結果。<c>null</c>の場合には空の文字列。</returns>
81         public static string OuterXml(XmlNode node)
82         {
83             return XmlUtils.OuterXml(node, String.Empty);
84         }
85
86         /// <summary>
87         /// ノードが<c>null</c>の場合に指定された文字列を返す<c>OuterXml</c>。
88         /// </summary>
89         /// <param name="node"><c>OuterXml</c>するノード。<c>null</c>も可。</param>
90         /// <param name="nullStr">渡されたノードが<c>null</c>の場合に返される文字列。<c>null</c>も可。</param>
91         /// <returns>渡されたノードを<c>OuterXml</c>した結果。<c>null</c>の場合には指定された文字列。</returns>
92         public static string OuterXml(XmlNode node, string nullStr)
93         {
94             if (node == null)
95             {
96                 return nullStr;
97             }
98
99             return StringUtils.DefaultString(node.OuterXml, nullStr);
100         }
101
102         #endregion
103
104         #region エンコード/デコード
105
106         /// <summary>
107         /// 指定された文字列をXMLエンコードする。
108         /// </summary>
109         /// <param name="s">エンコードする文字列。</param>
110         /// <returns>エンコードした文字列。</returns>
111         /// <exception cref="ArgumentNullException">文字列が<c>null</c>。</exception>
112         /// <remarks>
113         /// 使う場所によってはエンコードが必要ない文字もあるが、汎用のため常時
114         /// &lt;, &gt;, &quot;, &apos;, &amp; の5文字を変換する。
115         /// </remarks>
116         public static string XmlEncode(string s)
117         {
118             Validate.NotNull(s);
119             return s.Replace("&", "&amp;").Replace("<", "&lt;")
120                 .Replace(">", "&gt;").Replace("\"", "&quot;").Replace("\'", "&apos;");
121         }
122
123         /// <summary>
124         /// 指定された文字列をXMLデコードする。
125         /// </summary>
126         /// <param name="s">エンコードされた文字列。</param>
127         /// <returns>エンコードを解除した文字列。</returns>
128         /// <exception cref="ArgumentNullException">文字列が<c>null</c>。</exception>
129         /// <remarks>
130         /// &lt;, &gt;, &quot;, &apos;, &amp; の5文字を変換する。
131         /// </remarks>
132         public static string XmlDecode(string s)
133         {
134             Validate.NotNull(s);
135             return s.Replace("&lt;", "<").Replace("&gt;", ">")
136                 .Replace("&quot;", "\"").Replace("&apos;", "\'").Replace("&amp;", "&");
137         }
138
139         #endregion
140     }
141 }