XML - ayuda en XML y JDOM

 
Vista:

ayuda en XML y JDOM

Publicado por gerardo (1 intervención) el 21/08/2004 01:23:32
Estoy haciendo un programa en el cual quiero leer un elemento dado el valor de un atributo, por ejemplo
.....
<reaccion name="rn:R0145" type="reversible"> ....</reaction>
<reaccion name="rn:R0679" type="irreversible"> ....</reaction>
.....
Aqui quiero obtener el elemento reaccion cuyo atributo nombre sea = rn:R0679.
Alguien podria decirme si hay un metodo o forma de hacerlo sin usar ciclos while o for
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Leer un elemento dado el valor de un atributo sin utilizar ciclos while o for

Publicado por Alejandro (258 intervenciones) el 10/07/2023 22:34:49
Si deseas obtener un elemento específico en XML basado en el valor de un atributo sin utilizar ciclos while o for, puedes utilizar consultas XPath. XPath es un lenguaje de consulta que te permite seleccionar elementos en un documento XML utilizando expresiones de ruta.

Aquí tienes un ejemplo de cómo hacerlo utilizando XPath en C#:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using System.Xml;
 
class Program
{
    static void Main()
    {
        string xml = @"
            <root>
                <reaccion name=""rn:R0145"" type=""reversible"">...</reaccion>
                <reaccion name=""rn:R0679"" type=""irreversible"">...</reaccion>
            </root>";
 
        XmlDocument doc = new XmlDocument();
        doc.LoadXml(xml);
 
        string attributeValue = "rn:R0679";
 
        XmlNode targetNode = doc.SelectSingleNode($"//reaccion[@name='{attributeValue}']");
 
        if (targetNode != null)
        {
            Console.WriteLine(targetNode.OuterXml);
        }
        else
        {
            Console.WriteLine("Elemento no encontrado.");
        }
    }
}

En este ejemplo, hemos definido un documento XML de ejemplo y utilizamos `XmlDocument` para cargar el XML. Luego, utilizamos la función `SelectSingleNode` junto con una expresión XPath para seleccionar el elemento `reaccion` que tenga un atributo `name` igual al valor que estamos buscando.

El resultado se almacena en la variable `targetNode`, y luego verificamos si el nodo no es nulo para imprimir su contenido (en este caso, utilizamos `OuterXml` para obtener el texto completo del nodo) o mostrar un mensaje de que el elemento no fue encontrado.

Recuerda ajustar la expresión XPath según tus necesidades y utilizar el lenguaje de programación que estés utilizando.

¡Espero que esta solución te ayude a leer un elemento basado en el valor de un atributo sin utilizar ciclos while o for!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar