public string LookupNamespace(string prefix)
{
int nsCount = _nsCount;
if (prefix.Length == 0)
{
for (int i = nsCount - 1; i >= _nsTop; i--)
{
Namespace nameSpace = _namespaces[i];
if (nameSpace.Prefix.Length == 0)
return nameSpace.Uri;
}
return string.Empty;
}
if (prefix.Length == 1)
{
char prefixChar = prefix[0];
for (int i = nsCount - 1; i >= _nsTop; i--)
{
Namespace nameSpace = _namespaces[i];
if (nameSpace.PrefixChar == prefixChar)
return nameSpace.Uri;
}
return null;
}
for (int i = nsCount - 1; i >= _nsTop; i--)
{
Namespace nameSpace = _namespaces[i];
if (nameSpace.Prefix == prefix)
return nameSpace.Uri;
}
if (prefix == "xmlns")
return xmlnsNamespace;
if (prefix == "xml")
return xmlNamespace;
return null;
}