🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.pl.comp.lang.csharp
Article #22437

Re: Jak parsować dokument xml zapisany w xmlu?

#22437
From: Łukasz 'Maly' Ostrowski
Date: Tue, 11 Sep 2012 08:12
41 lines
2447 bytes
Hello Pawel,
Sunday, September 9, 2012, 10:56:37 PM, you wrote:
> W załączniku przesyłam fragment xmla z bazy danych, niby prosty ale 
> skomplikowany zarazem.
> Czy da się coś z nim zrobić aby wyciągnąć dane (wykorzystać klasy dostępne w
> Net czy też trzeba wszystko rzeźbić ręcznie) ?

/Corruptnięty plik dostałem na maila, postuję rozwiązanie dla
 potomnych ;-)/

Generalnie problem polega na znaku 0x8C, który jest nielegalny w tym
encodingu i to czyni ten xml ill-formed. Jest to znak:
http://en.wikipedia.org/wiki/Œ

"In HTML, the HTML character entity references Œ and œ
can also be used. In Windows-1252, at positions 0x8C and 0x9C."

Jeżeli jest on istotny to wystarczy go podmienić legalnym-xml-entity
i załadować do XmlDocument. Jeżeli jest nieistotny to wystarczy go
wyciąć.

Przykładowy strip z wycięciem:

var xml = File.ReadAllText("tab_xml.xml");

xml = xml.Replace("\x8c", "œ");

XmlDocument doc = new XmlDocument();
doc.LoadXml(xml); // *** ladujemy "spatchowany" dokument główny

var elements = doc.GetElementsByTagName("XML");
foreach (XmlElement elem in elements)
{
    XmlDocument innerDoc = new XmlDocument();
    innerDoc.LoadXml(elem.InnerText); // *** tutaj masz 
                                      // dokumenty "zagnieżdzone"
}

-- 
Pozdrawiam,
Łukasz 'Maly' Ostrowski.      http://l3v.pl/
Technical Details
Message-ID: <1d2ky6c5d7pee$.1qbini4v356el$.dlg@40tude.net>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!news.task.gda.pl!news.dialog.net.pl!not-for-mail
References: <504c5bb4$0$1311$65785112@news.neostrada.pl> <flur8qj0574w$.vewro493o4xg$.dlg@40tude.net> <504ca7ed$0$1219$65785112@news.neostrada.pl> <1e3mrgdbcrlf3$.1x2o7w161s88n$.dlg@40tude.net>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.nask.pl!news.nask.org.pl!news.task.gda.pl!news.dialog.net.pl!not-for-mail
From: Łukasz 'Maly' Ostrowski <l3vi4than@USUNgmail.com>
Newsgroups: alt.pl.comp.lang.csharp
Subject: Re: Jak parsować dokument xml zapisany w xmlu?
Date: Tue, 11 Sep 2012 10:12:42 +0200
Organization: Acme
Lines: 41
Message-ID: <1d2ky6c5d7pee$.1qbini4v356el$.dlg@40tude.net>
References: <504c5bb4$0$1311$65785112@news.neostrada.pl> <flur8qj0574w$.vewro493o4xg$.dlg@40tude.net> <504ca7ed$0$1219$65785112@news.neostrada.pl> <1e3mrgdbcrlf3$.1x2o7w161s88n$.dlg@40tude.net>
NNTP-Posting-Host: static-78-9-71-129.ssp.dialog.net.pl
Mime-Version: 1.0
X-Trace: news.dialog.net.pl 1347351200 17727 78.9.71.129 (11 Sep 2012 08:13:20 GMT)
X-Complaints-To: abuse@dialog.net.pl
NNTP-Posting-Date: Tue, 11 Sep 2012 08:13:20 +0000 (UTC)
User-Agent: 40tude_Dialog/2.0.15.1
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit