// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
using System;
+using System.IO;
using System.Text;
using System.Globalization;
using System.Xml.Schema;
public static string EncodeLocalName (string name)
{
+ if (name == null)
+ return name;
+
string encoded = EncodeName (name);
int pos = encoded.IndexOf (':');
if (pos == -1)
private static string EncodeName (string name, bool nmtoken)
{
+ if (name == null || name.Length == 0)
+ return name;
+
StringBuilder sb = new StringBuilder ();
int length = name.Length;
for (int i = 0; i < length; i++) {
return EncodeName (name, false);
}
- public static string EncodeNmToken(string name)
+ public static string EncodeNmToken (string name)
{
+ if (name == String.Empty)
+ throw new XmlException ("Invalid NmToken: ''");
return EncodeName (name, true);
}
}
}
+ // LAMESPEC: It has been documented as public, but is marked as internal.
+ internal static string ToBinHexString (byte [] buffer)
+ {
+ StringWriter w = new StringWriter ();
+ WriteBinHex (buffer, 0, buffer.Length, w);
+ return w.ToString ();
+ }
+
+ internal static void WriteBinHex (byte [] buffer, int index, int count, TextWriter w)
+ {
+ if (buffer == null)
+ throw new ArgumentNullException ("buffer");
+ if (index < 0)
+ throw new ArgumentOutOfRangeException ("index", index, "index must be non negative integer.");
+ if (count < 0)
+ throw new ArgumentOutOfRangeException ("count", count, "count must be non negative integer.");
+ if (buffer.Length < index + count)
+ throw new ArgumentOutOfRangeException ("index and count must be smaller than the length of the buffer.");
+
+ // Copied from XmlTextWriter.WriteBinHex ()
+ int end = index + count;
+ for (int i = index; i < end; i++) {
+ int val = buffer [i];
+ int high = val >> 4;
+ int low = val & 15;
+ if (high > 9)
+ w.Write ((char) (high + 55));
+ else
+ w.Write ((char) (high + 0x30));
+ if (low > 9)
+ w.Write ((char) (low + 55));
+ else
+ w.Write ((char) (low + 0x30));
+ }
+ }
+
public static byte ToByte(string s)
{
return Byte.Parse(s, CultureInfo.InvariantCulture);
return Char.Parse(s);
}
- public static DateTime ToDateTime(string s)
+#if NET_2_0
+ [Obsolete]
+#endif
+ public static DateTime ToDateTime (string s)
{
- return ToDateTime(s, datetimeFormats);
+ return ToDateTime (s, datetimeFormats);
}
+#if NET_2_0
+ public static DateTime ToDateTime (string value, XmlDateTimeSerializationMode mode)
+ {
+ string modestr = null;
+ switch (mode) {
+ case XmlDateTimeSerializationMode.Local:
+ case XmlDateTimeSerializationMode.RoundTripKind:
+ default:
+ return ToDateTime (value, "yyyy-MM-ddTHH:mm:ss.fffffffzzz");
+ case XmlDateTimeSerializationMode.Utc:
+ return ToDateTime (value, "yyyy-MM-ddTHH:mm:ss.fffffffZ").ToUniversalTime ();
+ case XmlDateTimeSerializationMode.Unspecified:
+ return ToDateTime (value, "yyyy-MM-ddTHH:mm:ss.fffffff");
+ }
+ }
+#endif
public static DateTime ToDateTime(string s, string format)
{
DateTimeFormatInfo d = new DateTimeFormatInfo();
if (Double.IsNegativeInfinity(value)) return "-INF";
if (Double.IsPositiveInfinity(value)) return "INF";
if (Double.IsNaN(value)) return "NaN";
+#if TARGET_JVM
+ return value.ToString("R", NumberFormatInfo.InvariantInfo);
+#else
return value.ToString(CultureInfo.InvariantCulture);
+#endif
}
public static string ToString(float value)
if (Single.IsNegativeInfinity(value)) return "-INF";
if (Single.IsPositiveInfinity(value)) return "INF";
if (Single.IsNaN(value)) return "NaN";
+#if TARGET_JVM
+ return value.ToString("R", NumberFormatInfo.InvariantInfo);
+#else
return value.ToString(CultureInfo.InvariantCulture);
+#endif
}
[CLSCompliant (false)]
return value.ToString(CultureInfo.InvariantCulture);
}
- public static string ToString(DateTime value)
- {
- return value.ToString("yyyy-MM-ddTHH:mm:ss.fffffffzzz", CultureInfo.InvariantCulture);
+#if NET_2_0
+ [Obsolete]
+#endif
+ public static string ToString (DateTime value)
+ {
+ return value.ToString ("yyyy-MM-ddTHH:mm:ss.fffffffzzz", CultureInfo.InvariantCulture);
+ }
+
+#if NET_2_0
+ public static string ToString (DateTime value, XmlDateTimeSerializationMode mode)
+ {
+ string modestr = null;
+ switch (mode) {
+ case XmlDateTimeSerializationMode.Local:
+ case XmlDateTimeSerializationMode.RoundTripKind:
+ default:
+ return value.ToString (
+ "yyyy-MM-ddTHH:mm:ss.fffffffzzz",
+ CultureInfo.InvariantCulture);
+ break;
+ case XmlDateTimeSerializationMode.Utc:
+ return value.ToUniversalTime ().ToString (
+ "yyyy-MM-ddTHH:mm:ss.fffffffZ",
+ CultureInfo.InvariantCulture);
+ break;
+ case XmlDateTimeSerializationMode.Unspecified:
+ return value.ToString (
+ "yyyy-MM-ddTHH:mm:ss.fffffff",
+ CultureInfo.InvariantCulture);
+ break;
+ }
}
+#endif
public static string ToString(DateTime value, string format)
{
public static string VerifyName (string name)
{
- if(name == null)
+ if (name == null)
throw new ArgumentNullException("name");
- if(!XmlChar.IsName (name))
+ if (!XmlChar.IsName (name))
throw new XmlException("'" + name + "' is not a valid XML Name");
return name;
}
- public static string VerifyNCName(string ncname)
+ public static string VerifyNCName (string ncname)
{
- if(ncname == null)
+ if (ncname == null)
throw new ArgumentNullException("ncname");
- if(!XmlChar.IsNCName (ncname))
+ if (!XmlChar.IsNCName (ncname))
throw new XmlException ("'" + ncname + "' is not a valid XML NCName");
return ncname;
}
+#if NET_2_0
+ public static string VerifyNMTOKEN (string name)
+#else
+ internal static string VerifyNMTOKEN (string name)
+#endif
+ {
+ if (name == null)
+ throw new ArgumentNullException("name");
+
+ if (!XmlChar.IsNmToken (name))
+ throw new XmlException("'" + name + "' is not a valid XML NMTOKEN");
+ return name;
+
+ }
+
// It is documented as public method, but in fact it is not.
internal static byte [] FromBinHexString (string s)
{