Witam serdecznie! Słowem wstępu, jestem tu nowy i liczę na otwartość i pomoc bardziej doświadczonych forumowiczów.
Piszę program do przeglądania dokumentów. Na chwilę obecną program obsługuję wyłącznie dokumenty .txt, które wybierane są z listy comboBox i wczytywane do richTexBox'a bezpośrednio z dysku. Pliki reprezentują dane filmów, więc każdy plik ma takie same elementy:
Tytuł:
Rok:
Reżyseria:
i oczywiście zmieniają się tylko poszczególne dane każdego filmu. Chciałbym stworzyć schemat , dzięki któremu pliki opisujące film zawierały tylko dane charakterystyczne (bez "przedrostków" typu [i]Tytuł[/i]). Słyszałem, że można w tej sytuacji bardzo dobrze wykorzystać elementy XML. Na potrzeby postu wkleję zawartość przykładowego pliku .xml:
<?xml version="1.0" encoding="utf-8"?>
<films>
<movies>
<movie_ID>5</movie_ID>
<movie_Title>film1</movie_Title>
<movie_Year>1999</movie_Year>
<movie_Director>rezyser1</movie_Director>
<bestPicture>Y</bestPicture>
<AFIRank>1</AFIRank>
</movies>
<movies>
<movie_ID>6</movie_ID>
<movie_Title>film2</movie_Title>
<movie_Year>2001</movie_Year>
<movie_Director>rezyser2</movie_Director>
<bestPicture>Y</bestPicture>
<AFIRank>2</AFIRank>
</movies>
</films>
oraz kod comboBox'a wczytującego na razie jak już wcześniej wspominałem same pliki .txt:
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
plik = comboBox1.Text;
for (int i = 0; i < comboBox1.Items.Count; i++)
{
if (plik == comboBox1.Items[i].ToString())
{
FileStream fs = new FileStream("E:\\syl\\" + comboBox1.Items[i].ToString() + ".txt", FileMode.Open);
StreamReader sr = new StreamReader(fs);
richTextBox1.Text = sr.ReadToEnd();
sr.Close();
}
}
}
oraz arkusz stylu XML:
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
<HTML>
<TITLE>Filmy</TITLE>
<Table border ="0" padding="3" cellspacing="2">
<THEAD bgcolor="efefe4">
<TH algin="left">Tytuł filmu</TH>
<TH>Rok premiery</TH>
<TH>Ocena AFI</TH>
<TH>Reżyser</TH>
</THEAD>
<xsl:for-each select="//movies">
<xsl:sort select="movie_Title" />
<tr>
<td algin="left"><xsl:value-of select="movie_Title"/> </td>
<td algin="center"><xsl:value-of select="movie_Yaer"/> </td>
<td algin="center"><xsl:value-of select="AFIRank"/> </td>
<td algin="left"><xsl:value-of select="movie_Director"/> </td>
</tr>
</xsl:for-each>
</Table>
</HTML>
</xsl:template>
</xsl:stylesheet>
Proszę o wskazówkę jak sparsować XMLa by estetycznie wyświetlić dane w richTextBox'ie. Dziękiuję z góry!
PS. Za pomocą plików xml i xsl oraz klasy XslTransform stworzyłem plik HTM z danymi wyjściowym w postaci kodu HTML. Dzięki temu otrzymałem "estetyczny widok" danych z pliku XML.