Проблема в ServiceDocument как атрибуте xmlns для него.
--- Предварительно назначенный XML
System.Xml.XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml("<?xml version=\"1.0\" encoding=\"utf-8\"?> <ServiceDocument xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.microsoft.com/ado/2007/08/dataservices\" > <BaseUri> http://xxxx.xxxxx.net/xxx.1/ </BaseUri> <ProfilesLink> http://adf.apis.dds.net/af.1/ </ProfilesLink> <SignedInUser> <Cid> 4433sfsdfgd </Cid> <Uri> http://fd.apis.afdafd.net/V4.1/cid-xxxxx/adad </Uri> </SignedInUser> <StatusMessageLink> http://psm.adfa.afd.net/dfa.1/ </StatusMessageLink> </ServiceDocument>" ); // Response.Write(xmlDoc.InnerXml);
- // PARSE XMLпроблема ниже **
Response.Write(xmlDoc.SelectSingleNode("/ServiceDocument/BaseUri").InnerXml);
Вам необходимо назначить короткие псевдонимы для пространств имен, используя XMLNamespaceManager .
См. эту страницу для примера.
Итак, чтобырешить вашу проблему:
var xmlNamespaceManager = new XmlNamespaceManager(xmlDoc.NameTable); xmlNamespaceManager.AddNamespace("ds", "http://schemas.microsoft.com/ado/2007/08/dataservices"); var result = xmlDoc.SelectNodes("/ds:ServiceDocument/ds:BaseUri", xmlNamespaceManager);