Soy nuevo en el trabajo con XML, y me he encontrado con un problema extraño al tratar de obtener una etiqueta específica de un archivo de configuración de spring.net. Después de tratar de reducir el problema con un archivo XML de prueba, descubrí que aplicar el siguiente código:No puedo usar Descendientes() o Elementos() con xmlns
List<XElement> nodes = xmlFile.Descendants("B").ToList();
proporciona una lista no vacía con el siguiente archivo:
<?xml version="1.0" encoding="utf-8" ?>
<A fakeAttribute="aaa">
<B id="DbProvider"/>
</A>
pero proporciona una cadena vacía con el siguiente archivo:
<?xml version="1.0" encoding="utf-8" ?>
<A xmlns="aaa">
<B id="DbProvider"/>
</A>
La única diferencia entre los archivos es el atributo.
No puedo imaginar una explicación para esto. Gracias por tu ayuda.
Gracias! Eso hizo el truco, pero también abrió el camino a otro problema. Puedo obtener descendientes llamados "B", por ejemplo, pero no puedo obtener descendientes llamados "db: provider" (no usando "db" ni "db: provider"), lo cual es tristemente lo que tengo que hacer. – Tomata
db aparece como un espacio de nombres diferente. Mi error. – Tomata
@Tomata Si desea ignorar los espacios de nombres, puede escribir algo como: 'var lst = doc.Descendants(). Where (p => p.Name.LocalName ==" B "). ToList();' – xanatos