Avatar billede tued Nybegynder
06. december 2004 - 11:56 Der er 16 kommentarer og
1 løsning

Hente en værdi ud af et XML dokument under SAX parsning

Hej

Sidder og roder med SAX i java.

Vil lige høre om det er muligt og gerne hvordan man henter værdien af et xml element ud nå man er i gang med at parse et xml dokument.
Når jeg fx når elementet <test>123</test> bliver startElement kaldt. Jeg vil gerne kunne hente "123" ud og lægge den over i en streng.
Hvordan gør man det ???
Avatar billede arne_v Ekspert
06. december 2004 - 12:01 #1
Den samler du op via characters metoden.
Avatar billede arne_v Ekspert
06. december 2004 - 12:01 #2
Avatar billede tued Nybegynder
06. december 2004 - 12:04 #3
Synes at jeg har prøvet at skrive til system.out.println() hver gang den går ind i charactors....
Avatar billede arne_v Ekspert
06. december 2004 - 12:08 #4
Det er den som bruges til at samle tekst op med !
Avatar billede tued Nybegynder
06. december 2004 - 12:45 #5
har fået det til at virke. Kom til at skrive "charactors" i stedet for "characters".
Avatar billede arne_v Ekspert
06. december 2004 - 12:54 #6
Ja - charactors bliver jo ikke kaldt
Avatar billede tued Nybegynder
06. december 2004 - 12:56 #7
næ, fandt jeg også ud af.......lidt træls tyrkfejl.
Avatar billede arne_v Ekspert
06. december 2004 - 12:58 #8
Ja og man får ingen fejl fordi default klassen har en metode, som bare ikke bliver
overridet.
Avatar billede arne_v Ekspert
06. december 2004 - 13:26 #9
OK ?
Avatar billede tued Nybegynder
07. december 2004 - 15:18 #10
Vil gerne give dig de point, men gjort det rigtigt fra starten. Det var kun en stave fejl der ødelagde det.

Du kan sikkert også svare på følgemde spørgsmål: Hvilken parser er god at bruge i .NET sammenhæng ?
Findes der en ? Hvad hedder den ?
Skal helst være en event parser.
Avatar billede arne_v Ekspert
07. december 2004 - 15:30 #11
System.Xml.XmlDocument er en helt normal DOM parser

System.Xml.XmlReader & System.Xml.XmlTextReader er nok det du vil bruge
i.s.f. SAX. men det er en pull model ikke en push model så det er noget
anderledes
Avatar billede tued Nybegynder
07. december 2004 - 15:33 #12
Det er fordi jeg modtager en streng med mit "xml dokument". Denne streng skal jeg så hente nogle værdier ud af. Både element navn og selve værdien i elementet.
Avatar billede arne_v Ekspert
07. december 2004 - 15:37 #13
Både DOM parser og SAX/.NET reader kan læse fra en string.
Avatar billede tued Nybegynder
07. december 2004 - 15:40 #14
ok. Synes bare ikke at jeg har kunnet få det til at virke med XmlTextReader. Kan ikke få læst strengen ind i det objekt jeg har oprettet.
Avatar billede arne_v Ekspert
07. december 2004 - 15:45 #15
Jeg kan godt prøve at lave et eksempel i aften
Avatar billede arne_v Ekspert
07. december 2004 - 22:29 #16
using System;
using System.IO;
using System.Xml;

namespace E3
{
    public class FooBar
    {
        private string field;
        public FooBar() : this("")
        {
        }
        public FooBar(string field)
        {
            this.field = field;
        }
        public string Field
        {
            get
            {
                return field;
            }
            set
            {
                field = value;
            }
        }
        public override string ToString()
        {
            return ("#" + field + "#");
        }
    }
    class MainClass
    {
        public static void Main(string[] args)
        {
            string s = "<foobar><field>val</field></foobar>";
            FooBar fb = new FooBar();
            StringReader sr = new StringReader(s);
            XmlTextReader xtr = new XmlTextReader(sr);
            while(!xtr.EOF)
            {
                if(xtr.IsStartElement() && xtr.Name == "field")
                {
                    fb.Field = xtr.ReadString();
                }
                xtr.Read();
            }
            Console.WriteLine(fb);
        }
    }
}
Avatar billede tued Nybegynder
08. december 2004 - 10:56 #17
Så fik jeg det til at virke. Lækkert.
Mange tak for hjælpen.
Det var lige det med StringReader der gjore det.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester