Inicio > Ejemplos, Errores, Tips, XML > [XML] Error – "Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function."

[XML] Error – "Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function."

buenas,

Aquí mi solución para este problema , supongamos que tenemos el siguiente archivo XML, que puede ser una respuesta de consumir un WebService, un archivo que generamos, etc.

Archivo Xml

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <GetReportResultsResponse xmlns="https://myservice">
      <GetReportResultsResult>FileXml</GetReportResultsResult>
    </GetReportResultsResponse>
  </soap:Body>
</soap:Envelope>

Como se pueden dar cuenta, se observan prefijos en cada nodo, este prefijo es “soap” y el archivo Xml contiene el namespace para usar este prefijo, pero al momento de seleccionar un nodo de la siguiente manera:

XmlDocument document = new XmlDocument();
document.Load(@"../../FileXml.xml");

XmlNodeList nodes = 
    document.SelectNodes(@"soap:Body");

Visual Studio nos informa de la siguiente excepción:

“Exception: Namespace Manager or XsltContext needed. This query has a prefix, variable, or user-defined function.”

Esto se debe a que no se reconoce el nombre de espacio que contiene nuestro archivo Xml, para solucionarlo debemos agregar un administrador de namespace y agregarlo a la selección de la siguiente manera:

Solución:

XmlNamespaceManager nms = 
    new XmlNamespaceManager(document.NameTable);
nms.AddNamespace("soap", "http://schemas.xmlsoap.org/soap/envelope");


XmlNodeList nodes = 
    document.SelectNodes(@"soap:Body",nms);

Con esto es suficiente para poder seleccionar nuestros nodos, y así manipularlo a nuestro antojo. Espero que les ayude este tip, así que saludos…..😀

Saludos,

Norberto😛

Etiquetas de Technorati: ,,,
Categorías:Ejemplos, Errores, Tips, XML
  1. Aún no hay comentarios.
  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: