namespace System.Xml
{
+#if NET_2_0
+ [Serializable]
+#endif
public class XmlQualifiedName
{
// Constructors
return ns + ":" + name;
}
+ internal static XmlQualifiedName Parse (string name, IXmlNamespaceResolver resolver)
+ {
+ return Parse (name, resolver, false);
+ }
+
+ internal static XmlQualifiedName Parse (string name, IXmlNamespaceResolver resolver, bool considerDefaultNamespace)
+ {
+ int index = name.IndexOf (':');
+ if (index < 0 && !considerDefaultNamespace)
+ return new XmlQualifiedName (name);
+ string prefix = index < 0 ? String.Empty : name.Substring (0, index);
+ string localName = index < 0 ? name : name.Substring (index + 1);
+ string ns = resolver.LookupNamespace (prefix);
+ if (ns == null) {
+ if (prefix.Length > 0)
+ throw new ArgumentException ("Invalid qualified name.");
+ else
+ ns = String.Empty;
+ }
+ return new XmlQualifiedName (localName, ns);
+ }
+
+ internal static XmlQualifiedName Parse (string name, XmlReader reader)
+ {
+ return Parse (name, reader, false);
+ }
+
+ internal static XmlQualifiedName Parse (string name, XmlReader reader, bool considerDefaultNamespace)
+ {
+ int index = name.IndexOf (':');
+ if (index < 0 && !considerDefaultNamespace)
+ return new XmlQualifiedName (name);
+ string ns = reader.LookupNamespace (index < 0 ? String.Empty : name.Substring (0, index));
+ if (ns == null && index > 0)
+ throw new ArgumentException ("Invalid qualified name.");
+ return new XmlQualifiedName (index < 0 ? name : name.Substring (index + 1), ns);
+ }
+
// Operators
public static bool operator == (XmlQualifiedName a, XmlQualifiedName b)
{