¿Cuál es la historia detrás de XPath y soporte para espacios de nombres? ¿XPath como especificación precede a los espacios de nombres? Si tengo un documento donde los elementos se les ha dado un espacio de nombres por defecto:XPATHS y espacios de nombres predeterminados
<foo xmlns="uri" />
Parece como si alguna de las bibliotecas procesador XPath no reconocerá //foo
debido al espacio de nombres, mientras que otros lo harán. La opción que mi equipo ha pensado es agregar un prefijo de espacio de nombres usando expresiones regulares al XPath (puede agregar un prefijo de espacio de nombres a través de XmlNameTable) pero esto parece quebradizo ya que XPath es un lenguaje tan flexible cuando se trata de pruebas de nodos.
¿Hay alguna norma que se aplique a esto?
Mi enfoque es un poco hackish pero parece funcionar bien; Elimino la declaración xmlns
con una búsqueda/reemplazo y luego aplico XPath.
string readyForXpath = Regex.Replace(xmldocument, "xmlns=\".+\"", String.Empty);
¿Es eso un enfoque justo o alguien ha resuelto esto de manera diferente?
Si desea seleccionar el uso de nodos a múltiples profundidades, termina teniendo que hacer algo como: 'xml.SelectNodes (" kml: kml/kml: Documento/kml: Carpeta ", administrador)' –