Avatar billede skwat Praktikant
17. april 2005 - 22:51 Der er 3 kommentarer og
1 løsning

Læse ikke afsluttet XML dokument

Hejsa Eksperter,

Lidt afledt af mit tidligere spørgsmål vedr. XML.

Jeg har forsøgt at bruge XMLTextReader til at læse en netstream som indenholder en del XML elementer.
Problemet er at jeg skal læse i XML dokumentet inden det er færdig skrevet: eks. kunne være:

<skwat>
<smartxml>
blalblablabla
</smartxml>
<LavIqHosSkwat />
<smartxml>
Det er ikke nemt at være mig.
<smartxml>

Her vil jeg så gerne kunne læse de to <skwat /> elementer plus <LavIqHosSkwat /> elementet, og have lavet dem til selvstændige XmlDocuments, er der nogen der har noget input til hvordan man gær det?

Hvis det ikke er forståeligt, så spørg bare løs.
Avatar billede arne_v Ekspert
17. april 2005 - 23:58 #1
Ikke kønt men:

using System;
using System.IO;
using System.Xml;

class MainClass
{
    public static void Main(string[] args)
    {
        string s = @"<skwat>
<smartxml>
blalblablabla
</smartxml>
<LavIqHosSkwat />
<smartxml>
Det er ikke nemt at være mig.
</smartxml>";
        StringReader sr = new StringReader(s);
        sr.ReadLine(); // skipper det start element som ikke har et slut element
        MyXmlTextReader xtr = new MyXmlTextReader(sr);
        while(true)
        {
            XmlDocument doc = new XmlDocument();
            try
            {
                doc.Load(xtr);
                Console.WriteLine();
            }
            catch (XmlException e)
            {
                break;
            }
            doc.Save(Console.Out);
        }
    }
}

class MyXmlTextReader : XmlTextReader
{
    private bool something;
    public MyXmlTextReader(StringReader sr) : base(sr)
    {
        something = false;
    }
    public override bool Read()
    {
        if(something && Depth == 0)
        {
            something = false;;
            ResetState();
            return false;
        }
        else
        {
            if(NodeType == XmlNodeType.Element) something = true;
            return base.Read();
        }
    }
}
Avatar billede skwat Praktikant
18. april 2005 - 10:11 #2
Hej Arne,

Gidder du (igen) at lægge et svar.

Jeg kan se den virker, men ikke gennemskue det.
Avatar billede arne_v Ekspert
18. april 2005 - 10:46 #3
svar
Avatar billede arne_v Ekspert
18. april 2005 - 10:47 #4
valide XML dokumenter kræver præcist et outer element og der skal være
en end tag.

Jeg fusker det ved at:
  - skippe det første start tag
  - lave fiktive end of file mellem de XML dokumenter vi skal have

Og det er noget forfærdeligt fusk.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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