New tests.
[mono.git] / mcs / class / System.XML / System.Xml / XmlQualifiedName.cs
index 22857ff868fcc3e3e59f3bfb0538e90edc881af2..e0bfd505886ea366c446a6920dac0a1667ec50b4 100644 (file)
@@ -109,14 +109,41 @@ namespace System.Xml
                }
 
                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)
+                       if (index < 0 && !considerDefaultNamespace)
                                return new XmlQualifiedName (name);
-                       string ns = resolver.LookupNamespace (name.Substring (0, index));
+                       string ns = reader.LookupNamespace (index < 0 ? String.Empty : name.Substring (0, index));
                        if (ns == null)
                                throw new ArgumentException ("Invalid qualified name.");
-                       return new XmlQualifiedName (name.Substring (index + 1), ns);
+                       return new XmlQualifiedName (index < 0 ? name : name.Substring (index + 1), ns);
                }
 
                // Operators