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


Deserialize enum

Postades av 2008-10-08 11:38:15 - Martin Adrian, i forum xml, Tråden har 4 Kommentarer och lästs av 2413 personer

Jag får en xml fil från ett system som jag tänkte läsa in i en klass.

(Använder .Net serialization)

Ett element i filen är en enumoch jag får det inte att fungera eftersom xml filen innehåller linefeed

dvs den ser ut så här:
<minenum>
enumvalue
</minenum>

Det som händer är att jag får felmeddelandet att "\nenumvalue\n" inte ingår i enumen.

koden för att läsa in ser ut så här:

using (TextReader tr = new StreamReader(@"minxmlfil.xml")) {
XmlSerializer serializer = new XmlSerializer(typeof(minklass));
x = (minklass)serializer.Deserialize(tr);
}

Hittar inget attribut eller något som styr hur "whitespace" hanteras vid serialisering

Schemat jag använder för att generera serialiseringen har inställt att ta bort whitespace.


Svara

Sv: Deserialize enum

Postades av 2008-10-08 12:49:53 - Ola Lindfeldt

Det finns olika slags whitespace i XML.
Significant och insignificant. Insignificant whitespace är de radbryt, tab:ar eller mellanslag som används för att formattera XML så att det blir mer lättläst för en människa. Alltså de tecken som ligger utanför elementinnehåll. Det är sådant whitespace som brukar avses om whitespace kan/får strippas bort. <b>Significant</b> whitespace - som i ditt fall - är sådana tecken som finns i element och det vore ju rent felaktigt av en XML-processor att strippa dem. Om datatypen är obestämd eller xsd:string är ju radbryt en helt normal teckensekvens som man kanske vill lagra i ett XML-element.
Det här löser inte ditt problem men förklarar varför det sannolikt (och förhoppningsvis) inte finns en String.Trim() inbyggt i Deserialize().

Den optimala lösningen vore ju att de som skapade filen själva validerade mot ett schema och att de valde datatypen xsd:enumeration för detta fält. Då skulle du garanterat få en fil som du kan Deserialisera till en förutsägbar Enum.

Om du inte kan få igenom detta skulle jag föreslå att du testar att skriva en egen Deserializer klass som ärver från XmlSerializer som tvättar bort oönskade whitespace i strängen med Trim() t.ex.


Svara

Sv:Deserialize enum

Postades av 2008-10-08 14:52:53 - Martin Adrian

Filen är validerat mot ett schema enligt följande:

<xs:element name="minenum">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="collapse"/>
<xs:enumeration value="enum1"/>
<xs:enumeration value="enum2"/>
</xs:restriction>
</xs:simpleType>
</xs:element>

Problemet är att det inte verkar finnas något serialization-attribut som styr hur whitespace ska hanteras.

Jag tror helt enkelt att jag lägger in ett filter som tar bort alla \n i filen innan jag deserialiserar.


Svara

Sv: Deserialize enum

Postades av 2008-10-08 15:33:58 - Martin Adrian

Lösningen blev så här:

using (StreamReader sr = new StreamReader(@"filename.xml")
using (StringReader str = new StringReader(sr.ReadToEnd().Replace("\n","")))
return new XmlSerializer(typeof(mytype)).Deserialize(str);


Svara

Sv:Deserialize enum

Postades av 2008-10-08 16:52:01 - Ola Lindfeldt

Ok.. du kanske kunde löst den via XmlTextReader annars:
http://msdn.microsoft.com/en-us/library/6f00zs65(VS.71).aspx


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

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 557
27 958
271 741
452
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