Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Uppdatera attribut i Xelement

Postades av 2008-03-31 11:18:41 - Tobias Gustavsson, i forum c# (c-sharp), Tråden har 1 Kommentarer och lästs av 711 personer

Hej, skulle behöva lite tips för att knäcka en xml/xlinq-nöt:

Jag skapar ett XDocument som innehåller något i stil med:

<root>
  <place nv="1" ba="1" amt="0" sn="4321" time="2008-03-19T08:00:06" />
  <place nv="2" ba="1" amt="0" sn="4321" time="2008-03-19T08:00:06" />
  ...
  <place nv="6" ba="1" amt="0" sn="4321" time="2008-03-19T08:00:06" />
  <place nv="1" ba="2" amt="0" sn="4321" time="2008-03-19T08:00:06" />
  ...
  <place nv="6" ba="40" amt="0" sn="4321" time="2008-03-19T08:00:06" />
</root>

Altså en mängd 'place' noder.

Vidare fångar jag fragment av xml från en server, dessa fragment liknar ovanstående men innehåller ofta bara några av attributen i Xdocumentet, dessa fragment kan innehålla en eller fler 'place'-noder t.ex.
<place nv="2" ba="1" amt="4" time="2008-03-31T08:00:06" />
<place nv="3" ba="22" sn="1111" time="2008-03-31T08:00:06" />

Jag vill updatera XDocumentet med den infångade data d.v.s.
noden med attribut nv="2" och ba="1" ska updateras med amt-attributet från "0" till "4", och nod 3-22 ska updateras med sn="1111" samt time-attributen på båda.

Jag försöker sedan m.h.a LinqToXml att välja ut rätt noder och uppdatera:
XElement xlelm = XElement.Load(new StringReader(indata));  //läser in fragment

            var elm = from em in xlelm.Descendants("place")                        
                      select em;
            
            foreach (var xl in elm)                     //för varje nod i fångat fragment, matcha nv och ba
            {  //_xelmdoc nedan är det XDocument jag vill uppdatera
                var repnode = from cn in _xelmdoc.Descendants("place")
                              where (cn.Attribute("nv").Value) == (xl.Attribute("nv").Value) &&
                              (cn.Attribute("nv").Value) == (xl.Attribute("ba").Value)
                              select cn;
             
                    foreach (var r in xl.Attributes())   //för varje attribut i fångade xmlfragmentet
                    {
                        //Här vill jag altså uppdatera rätt nod i XDocument:et men vet inte hur/om
                        //jag ska använda min repnode-variabel som faktiskt innehåller rätt data.
                    }
             }


Behöver tips på hur jag får rätt nod att uppdateras i XDocumentet. Hur utnyttjar jag repnode-variabeln för att updatera?

Tack på förhand, Tobbe.


Svara

Sv: Uppdatera attribut i Xelement

Postades av 2008-03-31 13:20:24 - Tobias Gustavsson

Jag löste en del av problemet väldigt enkelt visade det sig:

repnode.ElementAt(0).SetAttributeValue(r.Name, r.Value);


...i foreach-satsen gjorde susen, vet inte om det är det effektivaste sättet att göra. Worst case scenario är att xml-fragmenten regnar in med ca 200 st/sek, vet inte om jag kommer få prestandaproblem då. Om någon har förslag på smartare sätt att göra så är jag tacksam.

I övrigt anser jag frågan löst och markerar den som så inom kort...


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 812
27 960
271 761
383
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies