mboost-dp1

LINQ to XML i C#


Gå til bund
Gravatar #1 - Tang
7. jun. 2010 08:50
Som overskriften antyder, forsøger jeg at løse en "XML-opgave" med LINQ. Mere præcist forsøger jeg at læse url'en:

http://steamcommunity.com/id/mekhlin/games?xml=1


string url = "http://steamcommunity.com/id/mekhlin/games?xml=1";

XDocument xdoc = XDocument.Load(url);
var games = from g in xdoc.Descendants("game")
select new SteamGame
{
Id = g.Element("appID").Value,
Name = g.Element("name").Value,
storeLink = g.Element("storeLink").Value
};


Det er sådan set ikke noget problem at hente listen af spil og udskrive denne.
Problemet er, at nogle af titlerne indeholder f.eks. et trademark-tegn (superscript TM).
Dette bliver bare omdannet til et stort T og de pågældende titler ser derfor lidt underlige ud.

Hvordan løses dette problem?
Gravatar #2 - Windcape
7. jun. 2010 09:50
Problemet er at resultatet automatisk bliver konverteret fra UTF8 til Encoding.Default, hvilket er Codepage 1252, i Microsoft.NET på Windows.

Jeg vil nok hente det ud med en stream der i forvejen er sat til at bearbejde det som UTF8, og så beholde det sådan.
Gravatar #3 - Windcape
7. jun. 2010 10:03
Ignorer #2

Hvis du bruger Console.WriteLine til output, kan jeg informere om at det er derfor den konvertere ™ til T.

Jeg prøvede med output til en fil, det virkede fint ;-)

(Så det er altså Console.WriteLine der konvertere til cp1252, ikke XDocument.Load)
Gravatar #4 - cyandk
7. jun. 2010 10:08
too late ^^
Gravatar #5 - Tang
7. jun. 2010 10:46
#3

Ja, det burde jeg jo have testet...

Tak for tippet/svaret!
Gravatar #6 - csstener
7. jun. 2010 14:31
Sår lærte jeg også noget nyt idag....Tak
Gravatar #7 - arne_v
8. jun. 2010 02:12
#console

Den plejer altså at være 850 ikke 1252.
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login