Me gustaría consultar un objeto XDocument
para una ruta determinada (por ejemplo, "/ ruta/a/elemento/I/querer") pero no sé cómo proceder.¿Cómo puedo consultar un XDocument con una 'ruta'?
Respuesta
soemthing similar a esto podría funcionar:
var path = "/path/to/element/I/want";
var route = path.Split(new []{'/'}, StringSplitOptions.RemoveEmptyEntries);
XElement result = null;
foreach (var node in route)
{
if (result == null)
{
result = _xmlDocument.Element(node);
}
else
{
result = result.Element(node);
}
}
return result;
'RemoveEmptyEntries' no es una buena idea,' // 'tiene un significado específico en XPath y es para buscar todos los descendientes. – svick
Puede utilizar los métodos de System.Xml.XPath.Extensions
para hacer esto.
Por ejemplo, si desea seleccionar un solo elemento, se usaría XPathSelectElement()
:
var element = doc.XPathSelectElement("/path/to/element/I/want");
Las consultas no tienen que ser rutas simples como lo que usted describe, que utilizan el lenguaje XPath.
A pesar de que este es un post un poco mayores, cabe señalar que LINQ-to-XML
se puede utilizar como una alternativa a System.XML.XPath
para encontrar los elementos basados en un camino dentro de un XDocument
Ejemplo:
var results = x.Elements("path").Elements("to").Elements("element").Elements("I").Elements("want").FirstOrDefault();
Nota: Es posible que sea necesario modificar el comando LINQ to XML para acomodar la estructura real y/o cardinalidad del XML.
que tenía que hacer algo similar. Este repo tiene varias pruebas unitarias que muestran XDocument consultando con XPathEvaluate()
- 1. caracteres ilegales en ruta al cargar una cadena con XDocument
- 2. ¿Cómo puedo ordenar un XDocument por atributo?
- 3. ¿Cómo consultar un XDocument con LINQ cuando los elementos tienen dos puntos en su nombre?
- 4. ¿Cómo obtengo una NameTable de un XDocument?
- 5. ¿Cómo puedo obtener fácilmente un TextReader desde un XDocument?
- 6. ¿Puedo consultar una lista? Java
- 7. Crear un nuevo XDocument a partir de un XDocument existente
- 8. ¿Cómo serializo un objeto en un XDocument?
- 9. Cómo construir un XDocument con un foreach y LINQ?
- 10. ¿Cómo puedo consultar la ruta a un archivo de registro Nlog?
- 11. Consultar un diccionario con RavenDb
- 12. ¿Cómo puedo resolver entidades al cargar en un XDocument?
- 13. ¿Cómo puedo consultar tablas cruzadas con el patrón de repositorio?
- 14. ¿Cómo uso una ruta relativa en XDocument.Load?
- 15. Perdiendo nuevas líneas con XDocument
- 16. ¿Cómo puedo consultar utilizando una clave externa en MySQL?
- 17. ¿Cómo puedo usar un redireccionamiento .htaccess para una ruta parcial?
- 18. ¿Puedo consultar un RequestText de un procedimiento en Teradata?
- 19. ¿Cómo puedo consultar un archivo forzosamente en python?
- 20. ¿Cómo puedo consultar mi repositorio de subversión?
- 21. ¿Cómo puedo consultar solo para descendientes directos?
- 22. ¿Cómo agrego un tipo de documento a un XDocument?
- 23. ¿Cómo puedo descubrir la "ruta" de un recurso incrustado?
- 24. Rellenar XDocument de la Cadena
- 25. Seleccionar un XElement de un XDocument
- 26. Consultar con espacios Sparql
- 27. SQL, ¿Cómo consultar con múltiples claves foráneas en una tabla?
- 28. Con Hibernate, ¿cómo puedo consultar una tabla y devolver un hashmap con valor clave par nombre> nombre?
- 29. Cómo consultar una tabla, en sqlalchemy
- 30. consultar una subcolección de una colección con linq
posible duplicado de [cómo usar XPath con XDocument?] (Http://stackoverflow.com/questions/6209841/how-to-use-xpath-with -xdocument) –
Puede ver un ejemplo seleccionando diferentes rutas, con/sin definiciones de espacio de nombres, etc. aquí: http://stackoverflow.com/a/38272604/5838538. – Jelgab