Avatar billede fun22 Nybegynder
27. november 2007 - 17:16 Der er 10 kommentarer og
2 løsninger

Ryde op i xml

Hej

Jeg har en xml fil med en masse indhold i.. Den kunne f.eks se sådan her ud:

<MainChat>
  <ChatGroup GroupId="1">
    <Chat>
      <Msg>dsfsdf</Msg>
      <User>Jesper</User>
      <DateTime>18-11-2007 20:22:51</DateTime>
      <To>All</To>
    </Chat>
    <Chat>
      <Msg>dsfsdf</Msg>
      <User>Jesper</User>
      <DateTime>18-11-2007 20:22:51</DateTime>
      <To>All</To>
    </Chat>
  </ChatGroup>
</MainChat>

Hvordan gør jeg så sådan at der kun er f.eks 20 instanser af <Chat></Chat> hvor <To>All</To>??

Håber i forstår..
Avatar billede kalp Novice
27. november 2007 - 18:50 #1
vil du bare vise 20 eller fjerne alle efter de første 20?
Avatar billede fun22 Nybegynder
27. november 2007 - 19:02 #2
fjerne alle før de 20 sidste :)
Avatar billede kalp Novice
27. november 2007 - 19:11 #3
okay men så tror jeg du laver en xpath som henter alle noder som opfylder din betingelser..
Du kan loope resultatet igennem og med en tæller se når du når til 20 og fjerne alt efter.

jeg kan se du har arbejdet lidt med det så ved ikke om det var nok til at du kan sætte det sammen:)
Avatar billede fun22 Nybegynder
27. november 2007 - 19:14 #4
njaa.. Jeg er ikke så meget inde i det Xpath noget.. Eller i det hele taget at arbejde med filen fra asp.net (vb).. Jeg har kun leget lidt med xsl delen..
Avatar billede nielle Nybegynder
27. november 2007 - 19:24 #5
Noget i denne stil (det var ikke alt efter, men før, der skulle slettes):

            string xmlFile = @"C:\Sti\Til\din.xml";

            XmlDocument doc = new XmlDocument();
            doc.Load(xmlFile);

            XmlNode chatGroup = doc.SelectSingleNode("//ChatGroup[@GroupId=1]");
            XmlNodeList xnl = chatGroup.SelectNodes("descendant::Chat[To='All']");

            int antal = xnl.Count;
            for (int idx = 0; antal >= 20; idx++, antal--)
            {
                XmlNode child = xnl[idx];
                chatGroup.RemoveChild(child);
            }

            doc.Save(xmlFile);
Avatar billede fun22 Nybegynder
27. november 2007 - 20:47 #6
hvordan ser for (int idx = 0; antal >= 20; idx++, antal--) ud i vb??
Avatar billede nielle Nybegynder
27. november 2007 - 21:04 #7
Sådan:

        Dim xmlFile As String = "C:\Sti\Til\din.xml"

        Dim doc As XmlDocument = New XmlDocument
        doc.Load(xmlFile)

        Dim chatGroup As XmlNode = doc.SelectSingleNode("//ChatGroup[@GroupId=1]")
        Dim xnl As XmlNodeList = chatGroup.SelectNodes("descendant::Chat[To='All']")

        Dim antal As Integer = xnl.Count

        Dim idx As Integer = 0
        Do While antal >= 20
            idx = idx + 1
            antal = antal - 1

            Dim child As XmlNode = xnl(idx)
            chatGroup.RemoveChild(child)
        Loop

        doc.Save(xmlFile)
Avatar billede nielle Nybegynder
27. november 2007 - 21:05 #8
Ups:

        Do While antal >= 20
            Dim child As XmlNode = xnl(idx)
            chatGroup.RemoveChild(child)

            idx = idx + 1
            antal = antal - 1
        Loop
Avatar billede fun22 Nybegynder
30. november 2007 - 17:49 #9
Det er super.. Det virker.. Mange tak for hjælpen ;)
Avatar billede nielle Nybegynder
30. november 2007 - 19:19 #10
Og det er vel så egentlig en deler med kalp :^)
Avatar billede nielle Nybegynder
10. december 2007 - 18:32 #11
kalp, lægger du ikke et svar?
Avatar billede kalp Novice
10. december 2007 - 18:43 #12
kommmer her:)
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