Extraer valores del nodo XML

Tengo un archivo xml que tengo que leer y extraer valores de los nodos en algunas variables, encontré un nodo que no sé cómo extraer datos, este es el nodo:

<QuantityInIssueUnit uom="KO">288.000</QuantityInIssueUnit> 

Así que tengo que extraer KO y 288.00 y pasarlo a variables, probé esto:

if (!dr_art_line.Table.Columns.Contains("QuantityInIssueUnit") || 

    dr_art_line["QuantityInIssueUnit"].ToString().Length <= 0)
                                {
                                    QuantityInIssueUnit = 0;
                                }
                                else
                                {
                                QuantityInIssueUnit = Convert.ToDecimal(dr_art_line["QuantityInIssueUnit"]);
                                 {

y esto:

if (!dr_art_line.Table.Columns.Contains("QuantityInIssueUnit uom") || dr_art_line["QuantityInIssueUnit uom"].ToString().Length <= 0)
                            {
                                QuantityInIssueUnit_uom = 0;
                            }
                            else
                            {
                                QuantityInIssueUnit_uom = Convert.ToDecimal(dr_art_line["QuantityInIssueUnit uom"]);
                            }

Pero cada vez que la cantidad en la unidad de emisión es 0, sé que estoy haciendo algo mal al leer, ¿cuál es la forma correcta de leer este tipo de nodo?

¡Gracias!

preguntado el 12 de junio de 12 a las 12:06

Lo siento, puede que desconozca una forma de interactuar con XML con la que no estoy familiarizado, pero ¿por qué está interactuando con XML como una tabla aquí? ¿Por qué no usar un XmlDocument o un XmlReader? -

1 Respuestas

DOCUMENTO.xml

<ROOT>
    < . . . >
    <QuantityInIssueUnit uom="KO">288.000</QuantityInIssueUnit>
    < . . . >
</ROOT>

Si esta es su configuración, usaría algo como:

public static float ReadFromXml(string f, string n)
{
    string quantityInIssueUnit;
    XmlReader reader = XmlReader.Create(f);
    reader.ReadToFollowing(n);
    quantityInIssueUnit = reader.ReadInnerXml( );
    reader.Close( );
    return float.Parse(quantityInIssueUnit);
}

Entonces podrías llamar:

ReadFromXml(@"C:\\...\DOCUMENT.xml", "QuantityInIssueUnit");
// Returns 288 as a float

Respondido el 22 de junio de 12 a las 18:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.