public string LookupPrefix (string ns, bool atomizedNames)
{
if (current == null)
return null;
XmlElement el = GetCurrentElement ();
for (; el != null; el = el.ParentNode as XmlElement) {
for (int i = 0; i < el.Attributes.Count; i++) {
XmlAttribute attr = el.Attributes [i];
if (atomizedNames) {
if (!Object.ReferenceEquals (attr.NamespaceURI, XmlNamespaceManager.XmlnsXmlns))
continue;
if (Object.ReferenceEquals (attr.Value, ns))
// xmlns:blah="..." -> LocalName, xmlns="..." -> String.Empty
return attr.Prefix != String.Empty ? attr.LocalName : String.Empty;
} else {
if (attr.NamespaceURI != XmlNamespaceManager.XmlnsXmlns)
continue;
if (attr.Value == ns)
// xmlns:blah="..." -> LocalName, xmlns="..." -> String.Empty
return attr.Prefix != String.Empty ? attr.LocalName : String.Empty;
}
}
}
switch (ns) {
case XmlNamespaceManager.XmlnsXml:
return XmlNamespaceManager.PrefixXml;
case XmlNamespaceManager.XmlnsXmlns:
return XmlNamespaceManager.PrefixXmlns;
}
return null;
}
#endif