e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
131 lines
4.6 KiB
C#
131 lines
4.6 KiB
C#
//------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//------------------------------------------------------------
|
|
|
|
namespace System.IdentityModel
|
|
{
|
|
using System.IO;
|
|
using System.Text;
|
|
using System.Xml;
|
|
using System.IdentityModel;
|
|
|
|
static class XmlHelper
|
|
{
|
|
internal static string GetWhiteSpace(XmlReader reader)
|
|
{
|
|
string s = null;
|
|
StringBuilder sb = null;
|
|
while (reader.NodeType == XmlNodeType.Whitespace || reader.NodeType == XmlNodeType.SignificantWhitespace)
|
|
{
|
|
if (sb != null)
|
|
{
|
|
sb.Append(reader.Value);
|
|
}
|
|
else if (s != null)
|
|
{
|
|
sb = new StringBuilder(s);
|
|
sb.Append(reader.Value);
|
|
s = null;
|
|
}
|
|
else
|
|
{
|
|
s = reader.Value;
|
|
}
|
|
if (!reader.Read())
|
|
{
|
|
break;
|
|
}
|
|
}
|
|
return sb != null ? sb.ToString() : s;
|
|
}
|
|
|
|
internal static void OnRequiredAttributeMissing(string attrName, string elementName)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.RequiredAttributeMissing, attrName, elementName)));
|
|
}
|
|
|
|
internal static string ReadEmptyElementAndRequiredAttribute(XmlDictionaryReader reader,
|
|
XmlDictionaryString name, XmlDictionaryString namespaceUri, XmlDictionaryString attributeName,
|
|
out string prefix)
|
|
{
|
|
reader.MoveToStartElement(name, namespaceUri);
|
|
prefix = reader.Prefix;
|
|
bool isEmptyElement = reader.IsEmptyElement;
|
|
string value = reader.GetAttribute(attributeName, null);
|
|
if (value == null)
|
|
{
|
|
OnRequiredAttributeMissing(attributeName.Value, null);
|
|
}
|
|
reader.Read();
|
|
|
|
if (!isEmptyElement)
|
|
{
|
|
reader.ReadEndElement();
|
|
}
|
|
return value;
|
|
}
|
|
|
|
internal static string ReadTextElementAsTrimmedString(XmlElement element)
|
|
{
|
|
if (element == null)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperArgumentNull("element");
|
|
}
|
|
|
|
XmlReader reader = new XmlNodeReader(element);
|
|
reader.MoveToContent();
|
|
return XmlUtil.Trim(reader.ReadElementContentAsString());
|
|
}
|
|
|
|
internal static void OnRequiredElementMissing(string elementName, string elementNamespace)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.ExpectedElementMissing, elementName, elementNamespace)));
|
|
}
|
|
|
|
internal static void OnUnexpectedChildNodeError(string parentName, XmlReader r)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.UnexpectedXmlChildNode, r.Name, r.NodeType, parentName)));
|
|
}
|
|
|
|
internal static void OnUnexpectedChildNodeError(XmlElement parent, XmlNode n)
|
|
{
|
|
throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new XmlException(SR.GetString(SR.UnexpectedXmlChildNode, n.Name, n.NodeType, parent.Name)));
|
|
}
|
|
|
|
internal static System.Xml.UniqueId GetAttributeAsUniqueId(XmlDictionaryReader reader, XmlDictionaryString localName, XmlDictionaryString ns)
|
|
{
|
|
return GetAttributeAsUniqueId(reader, localName.Value, (ns != null ? ns.Value : null));
|
|
}
|
|
|
|
static System.Xml.UniqueId GetAttributeAsUniqueId(XmlDictionaryReader reader, string name, string ns)
|
|
{
|
|
if (!reader.MoveToAttribute(name, ns))
|
|
{
|
|
return null;
|
|
}
|
|
|
|
System.Xml.UniqueId id = reader.ReadContentAsUniqueId();
|
|
reader.MoveToElement();
|
|
|
|
return id;
|
|
}
|
|
|
|
static public void WriteAttributeStringAsUniqueId(XmlDictionaryWriter writer, string prefix, XmlDictionaryString localName, XmlDictionaryString ns, System.Xml.UniqueId id)
|
|
{
|
|
writer.WriteStartAttribute(prefix, localName, ns);
|
|
writer.WriteValue(id);
|
|
writer.WriteEndAttribute();
|
|
}
|
|
|
|
static public Int64 ReadElementContentAsInt64(XmlDictionaryReader reader)
|
|
{
|
|
reader.ReadFullStartElement();
|
|
Int64 i = reader.ReadContentAsLong();
|
|
reader.ReadEndElement();
|
|
return i;
|
|
}
|
|
|
|
}
|
|
|
|
}
|