SelectSingleNode retornando null para um caminho de nó xml bom e conhecido usando XPath
Considere este documento XML simples. O XML serializado mostrado aqui é o resultado de um XmlSerializer de um objeto POCO complexo cujo esquema não tenho controle.
<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>
O objetivo é extrair o valor do atributo extension no nó id. Neste caso, estamos usando o método SelectSingleNode e recebemos uma expressão XPath:
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;
O problema é que oSelectSingleNode
método retorna null para a expressão XPath especificada.
Questão: alguma idéia sobre a exatidão desta consulta XPath, ou por que essa chamada de método + expressão XPath retornaria um valor nulo? Talvez os namespaces sejam parte do problema?