Parsing di stringa xml

di il
17 risposte

Parsing di stringa xml

Ciao ragazzi,

da un web service ricevo la seguente stringa:

"<HSREQ xmlns:x="urn:gif:pdc:hsreq" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc" xsi:schemaLocation="urn:gif:pdc:hsreq ./xsd/hsreq.xsd">
<ESITO>OK</ESITO>
<MESSAGGIO>
<idupload>25913</idupload>
<idfattura>24629</idfattura>
</MESSAGGIO>
</HSREQ>"

Ho bisogno di usare uno strumento di lettura di questo xml che mi permetta di accedere in modo diretto
ai valori dei singoli elementi.

La classe piu diffusa di vb, net legge i dati da un file .xml, ma io non ho un file ho una stringa!!!

MI date una mano?

Grazie

17 Risposte

  • Re: Parsing di stringa xml

    Quale sarebbe la difficoltà? usa ricerche a sottostringa
  • Re: Parsing di stringa xml

    Substring?
    E che cerco

    <Esito>cosa qui dentro?<\esito>

    Ne sei certo di ciò che dici?
  • Re: Parsing di stringa xml

    Sono abbastanza certo.
    fatti una funzione banale del tipo prendi_tag_xml dove gli passi il tag da cercare
    trovi la prima posizione in cui si trova, diciamo inizio
    poi cerchi </+tag e quella è la fine
    cicli da inizio a fine e prendi tutta la stringa in mezzo, e la ritorni dalla funzione.
  • Re: Parsing di stringa xml

    E così impiego l ira di Zeus del tempo questa la sapevo anche io.

    Ho chiesto il parsing di xml come funzione nativa.
    Grazie molte comunque caro m2+
  • Re: Parsing di stringa xml

    Bhe io ci ho impiegato 90 secondi, cronometrato, con delphi.
  • Re: Parsing di stringa xml

    Inoltre la tua non è una stringa, prova a scrivere
    Dim s as string = e incollacela
    altrimenti potevi provare con ReadXml
  • Re: Parsing di stringa xml

    Cosa non è una stringa??


    e dove dovrei incollarla???
  • Re: Parsing di stringa xml

    Se per es la tua stringa avesse questa struttura
    "<MESSAGGIO><ESITO>OK</ESITO><idupload>25913</idupload><idfattura>24629</idfattura></MESSAGGIO>"
    potresti leggerla così
    Dim s As String
            s = "<MESSAGGIO><ESITO>OK</ESITO><idupload>25913</idupload><idfattura>24629</idfattura></MESSAGGIO>"
            TextBox2.Text = s
            Dim SR As New StringReader(s)
            Dim ds As New DataSet()
            ds.ReadXml(SR)
            DataGridView1.DataSource = ds.Tables(0)
  • Re: Parsing di stringa xml

    Versione pascal
    function g_xml_prenditag(i_stringa:string;i_nometag:string):string;
    var
       inizio:integer;
       fine:integer;
       i:integer;
       s:string;
    begin
       Result:='';
       inizio:=Pos('<'+lowercase(i_nometag)+'>',LowerCase(i_stringa));
       if inizio>0 then
       begin
           fine:=Pos('</'+lowercase(i_nometag)+'>',LowerCase(i_stringa));
           if fine>0 then
           begin
               s:='';
               for i:=inizio+length('<'+lowercase(i_nometag)+'>') to fine-1 do
                   s:=s+i_stringa[i];
               result:=s;
           end;
       end;
    end;
  • Re: Parsing di stringa xml

    patel ha scritto:


    Se per es la tua stringa avesse questa struttura
    "<MESSAGGIO><ESITO>OK</ESITO><idupload>25913</idupload><idfattura>24629</idfattura></MESSAGGIO>"
    potresti leggerla così
    Dim s As String
            s = "<MESSAGGIO><ESITO>OK</ESITO><idupload>25913</idupload><idfattura>24629</idfattura></MESSAGGIO>"
            TextBox2.Text = s
            Dim SR As New StringReader(s)
            Dim ds As New DataSet()
            ds.ReadXml(SR)
            DataGridView1.DataSource = ds.Tables(0)

    e cosa c'entra la griglia????

    devo leggerla a run time e passare i valori ad altre funzioni
  • Re: Parsing di stringa xml

    È solo per farti capire quanto sia semplice leggere una stringa xml ben strutturata, cosa che la tua non è, quindi sei costretto ad seguire il consiglio di +m2+
  • Re: Parsing di stringa xml

    Direi che la cosa è molto banale, eccoti qui il codice di esempio:
    Imports System.Text.RegularExpressions
    
    Dim txt = "<HSREQ xmlns:x=""urn:gif:pdc:hsreq"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xsi:schemaLocation=""urn:gif:pdc:hsreq ./xsd/hsreq.xsd""><ESITO>OK</ESITO><MESSAGGIO><idupload>25913</idupload><idfattura>24629</idfattura></MESSAGGIO></HSREQ>"
    
    Dim esito = Regex.Match(txt, "<ESITO>(.*?)</ESITO>").Groups(1).Value
    Dim idupload = Regex.Match(txt, "<idupload>(.*?)</idupload>").Groups(1).Value
    Dim idfattura = Regex.Match(txt, "<idfattura>(.*?)</idfattura>").Groups(1).Value
    
    Sergio
  • Re: Parsing di stringa xml

    Hai ragione SirJo, ora che ho visto come si fa sono d'accordo con te, è veramente banale.
  • Re: Parsing di stringa xml

    SirJo, hai barato, la stringa proposta da ridaria non aveva le doppie virgolette

    ridaria ha scritto:


    "<HSREQ xmlns:x="urn:gif:pdc:hsreq" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc" xsi:schemaLocation="urn:gif:pdc:hsreq ./xsd/hsreq.xsd">
    <ESITO>OK</ESITO>
    <MESSAGGIO>
    <idupload>25913</idupload>
    <idfattura>24629</idfattura>
    </MESSAGGIO>
    </HSREQ>"
Devi accedere o registrarti per scrivere nel forum
17 risposte