Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Intercettare presenza nodo in xml

    Ciao a tutti,
    sto realizzando una pagina asp.net che richiama una web service
    il risultato di questa web service è un xml
    dal quale io vado a prendere i risultati
    in questo modo

    InvoiceDetail[] values2 = response.InvoiceDetails;
    for (int i = 0; i < values2.Length; i++)
    {
    ...mi stampo i risultati
    }

    o richiamo direttamente senza ciclo
    il risultato della web service
    DateTime DueDate = response.DueDate;
    (response è la risposta della ws)

    vi volevo chiedere questo
    nel xml
    ho un nodo chiamato "errore"
    che non è sempre presente....ma solo se c'è un problema

    se lo metto in una variabile mi da eccezione quando questo non c'è nella risposta (la maggior parte delle volte)

    e anche se lo gestisco così
    if ( response.Error.ErrorMessage != null)
    {
    Errore= response.Error.ErrorMessage;
    }

    mi da errore
    come posso intercettare se il nodo è presente o no???

    Grazie in anticipo

  2. #2
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    hai l'XML che torna il webService ?

    nel qual caso,

    codice:
            string XML = xml;
    
            XmlDocument doc = new XmlDocument();
            doc.Load(Server.MapPath(xml));
            XmlNode errore = doc.SelectSingleNode("//errore");
    
    
            if (errore != null)
            {
                //...
            }
    Ultima modifica di djciko; 08-05-2014 a 14:29

  3. #3
    Quote Originariamente inviata da djciko Visualizza il messaggio
    hai l'XML che torna il webService ?

    nel qual caso,

    codice:
            string XML = xml;
    
            XmlDocument doc = new XmlDocument();
            doc.Load(Server.MapPath(xml));
            XmlNode errore = doc.SelectSingleNode("//errore");
    
    
            if (errore != null)
            {
                //...
            }
    Intanto grazie per avermi risposto

    io faccio una chiamata così

    DossierResponse response = WS.Find_01(userName, password, dossierRequest, language);

    come ti dicevo poi ciclo la risposta
    InvoiceDetail[] values2 = response.InvoiceDetails;

    la risposta che ottengo è questa

    <Find_01Response >
    <Find_01Result>
    <RequestValues>
    <WebServiceRequest>
    <ParameterName>serverName</ParameterName>
    <ParameterValue xsi:type="xsd:string">WSFE01</ParameterValue>
    </WebServiceRequest> <RequestID>WSFE01635350804596953411</RequestID>
    <ExitCode>17</ExitCode>
    <Error>
    <ErrorMessage>Il prezzo finale è diverso dal prezzo del preventivo. Non è possibile formalizzare la prenotazione</ErrorMessage>
    </Error>
    <PNR>14/030161</PNR>




    Error non c'e l'ho sempre
    ho fatto il confronto con != null ma se non lo trova mi da eccezione
    perchè quando è tutto ok manca proprio il nodo e non è che invece c'è ma vuoto

  4. #4
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    quando cicli nell'array InvoiceDetail[], prova ad ottenere la stringa XML.
    Tipo

    codice:
    values2.ToString();


    poi prova a cercare il nodo Error (con la "E" maiuscola, xml e' case-sensitive).

    senza una stringa XML non saprei come cercare un nodo...

  5. #5

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.