SelectSingleNode zwracający wartość null dla znanej dobrej ścieżki węzła xml przy użyciu XPath

Rozważmy ten prosty dokument XML. Przedstawiony tutaj serializowany XML jest wynikiem XmlSerializer ze złożonego obiektu POCO, nad którym schematem nie mam kontroli.

<My_RootNode xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="">
  <id root="2.16.840.1.113883.3.51.1.1.1" extension="someIdentifier" xmlns="urn:hl7-org:v3" /> 
  <creationTime xsi:nil="true" xmlns="urn:hl7-org:v3" />      
</My_RootNode>

Celem jest wyodrębnienie wartości atrybutu rozszerzenia w węźle id. W tym przypadku używamy metody SelectSingleNode i otrzymujemy wyrażenie XPath jako takie:

XmlNode idNode = myXmlDoc.SelectSingleNode("/My_RootNode/id");
//idNode is evaluated to null at this point in the debugger!
string msgID = idNode.Attributes.GetNamedItem("extension").Value;

Problem polega na tym, żeSelectSingleNode metoda zwraca wartość null dla podanego wyrażenia XPath.

Pytanie: wszelkie pomysły dotyczące poprawności zapytania XPath lub dlaczego to wywołanie metody + wyrażenie XPath zwróci wartość pustą? Być może przestrzenie nazw są częścią problemu?

questionAnswers(8)

yourAnswerToTheQuestion