Thread View: alt.pl.comp.lang.csharp
5 messages
5 total messages
Started by Paweł
Sun, 09 Sep 2012 09:01
Jak parsować dokument xml zapisany w xmlu?
Author: Paweł
Date: Sun, 09 Sep 2012 09:01
Date: Sun, 09 Sep 2012 09:01
20 lines
1590 bytes
1590 bytes
Witam
Chciałbym poprosić o małą podpowiedź jak można parsować w C# dokument xml,
który posiada wiele dokumentów xml (tyle ile rekordów w tabeli bazy danych)
zapisanych w postaci tekstowej (utf-8) tzn. znaczki tagów są w postaci
<>
<Element_glowny>
<Rekord_z_tabeli>
<rekord_xml><?xml version="1.0"?>
<tag1">< itd, dosyc rozbudowana struktura
</rekord_xml>
</Rekord_z_tabeli>
<Rekord_z_tabeli>
itd. ...
</Element_glowny>
Chodzi o wydobycie danych zapisanych jako tekst.
Z góry dziękuję za pomoc i pozdrawiam Paweł
Re: Jak parsować dokument xml zapisany w xmlu?
Author: Łukasz 'Maly' Ostrowski
Date: Sun, 09 Sep 2012 10:15
Date: Sun, 09 Sep 2012 10:15
18 lines
1711 bytes
1711 bytes
On Sun, 9 Sep 2012 11:01:49 +0200, Paweł wrote: > Witam > Chciałbym poprosić o małą podpowiedź jak można parsować w C# dokument xml, > który posiada wiele dokumentów xml (tyle ile rekordów w tabeli bazy danych) > zapisanych w postaci tekstowej (utf-8) tzn. znaczki tagów są w postaci > <> > <snip> > Chodzi o wydobycie danych zapisanych jako tekst. > Z góry dziękuję za pomoc i pozdrawiam Paweł To może być niespodziewane ale: http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx ;-). -- Pozdrawiam, Łukasz 'Maly' Ostrowski. http://l3v.pl/
Re: Jak parsować dokument xml zapisany w xmlu?
Author: Paweł
Date: Sun, 09 Sep 2012 13:59
Date: Sun, 09 Sep 2012 13:59
51 lines
3031 bytes
3031 bytes
Użytkownik "Łukasz 'Maly' Ostrowski" <l3vi4than@USUNgmail.com> napisał w
wiadomości news:flur8qj0574w$.vewro493o4xg$.dlg@40tude.net...
> On Sun, 9 Sep 2012 11:01:49 +0200, Paweł wrote:
>
>> Witam
>> Chciałbym poprosić o małą podpowiedź jak można parsować w C# dokument
>> xml,
>> który posiada wiele dokumentów xml (tyle ile rekordów w tabeli bazy
>> danych)
>> zapisanych w postaci tekstowej (utf-8) tzn. znaczki tagów są w postaci
>> <>
>> <snip>
>> Chodzi o wydobycie danych zapisanych jako tekst.
>> Z góry dziękuję za pomoc i pozdrawiam Paweł
>
> To może być niespodziewane ale:
> http://msdn.microsoft.com/en-us/library/system.xml.xmldocument.aspx
> ;-).
>
> --
> Pozdrawiam,
> Łukasz 'Maly' Ostrowski. http://l3v.pl/
Pierwszy z brzegu kod wykrzacza się na polskich znakach i zonk ;-(
public static void Main(string[] args)
{
// Create an XmlUrlResolver with default credentials.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials =
System.Net.CredentialCache.DefaultCredentials;
// Point the resolver at the desired resource and resolve as a
stream.
Uri baseUri = new Uri("C://tmp//xml//");
//Uri fulluri = resolver.ResolveUri(baseUri, "Tab_XR_to_XML.xml");
Uri fulluri = resolver.ResolveUri(baseUri, "rekordy.xml");
Stream s = (Stream)resolver.GetEntity(fulluri, null,
typeof(Stream));
// Create the reader with the resolved stream and display the data.
XmlReader reader = XmlReader.Create(s);
while (reader.Read())
{
Console.WriteLine(reader.ReadOuterXml());
}
Console.Write("Press any key to continue . . . ");
Console.ReadKey(true);
}
Re: Jak parsować dokument xml zapisany w xmlu?
Author: Łukasz 'Maly' Ostrowski
Date: Sun, 09 Sep 2012 16:50
Date: Sun, 09 Sep 2012 16:50
13 lines
1435 bytes
1435 bytes
On Sun, 9 Sep 2012 15:59:17 +0200, Paweł wrote: > Pierwszy z brzegu kod wykrzacza się na polskich znakach i zonk ;-( > <snip> Po co te kombinacje z resolverem? Uploadnij gdzieś tego xmla, w sensie na tyle obciętego żeby wywalał się XmlReader/XmlDocument, to zajrzę o co chodzi, bo tak trudno zgadnąć. -- Pozdrawiam, Łukasz 'Maly' Ostrowski. http://l3v.pl/
Re: Jak parsować dokument xml zapisany w xmlu?
Author: Łukasz 'Maly' Ostrowski
Date: Tue, 11 Sep 2012 08:12
Date: Tue, 11 Sep 2012 08:12
41 lines
2447 bytes
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/
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads