Ik heb een database waarin tekstvelden staan. Deze tekstvelden bevatten html tags voor opmaak zoals <p>, <a>, <li> etc.
De tekst bevat echter ook tags waar ik wat mee wil doen, welke in mijn geval zijn:
<crosslink>, <internalhyperlink>, <footnote>, <mark> & <externalhyperlink>
Bij het meerendeel van deze tags moet de xml omgezet worden in een hyperlink. Dat is geen probleem.
Ik haal de tekst uit de database en stop deze in een string. De string wordt in een stream gestopt en wordt uitgelezen als XML. Nu wil ik de xlink tags filteren en vervangen door html maar ik wil de rest van de tekst wat al HTML is laten voor wat het is.
Alles werkt nu wel maar ik raak dus mijn HTML opmaak kwijt tijdens het doorlopen van de stream.
Is er een manier om alle tags die gewoon html zijn te laten voor wat ze zijn en ze compleet toe te voegen in de output string zonder alles handmatig in te voeren?
De tekst bevat echter ook tags waar ik wat mee wil doen, welke in mijn geval zijn:
<crosslink>, <internalhyperlink>, <footnote>, <mark> & <externalhyperlink>
Bij het meerendeel van deze tags moet de xml omgezet worden in een hyperlink. Dat is geen probleem.
Ik haal de tekst uit de database en stop deze in een string. De string wordt in een stream gestopt en wordt uitgelezen als XML. Nu wil ik de xlink tags filteren en vervangen door html maar ik wil de rest van de tekst wat al HTML is laten voor wat het is.
Alles werkt nu wel maar ik raak dus mijn HTML opmaak kwijt tijdens het doorlopen van de stream.
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
| //tekst wordt meegegeven bij aanroepen van de functie. plannummer en identificatie worden alleen gebruikt bij de opbouw van een hyperlink. public string XMLReader(string text, string plannummer, string identificatie) { StringReader stream; //output van de functie declareren string output = null; StringBuilder sb = new StringBuilder(); //zorg ervoor dat de XML een root element heeft text = "<root>" + text + "</root>"; stream = new StringReader(text); XmlTextReader reader = new XmlTextReader(stream); reader.MoveToContent(); while (reader.Read()) { if (reader.Name == "p" && reader.NodeType == XmlNodeType.Element) { //handmatige toevoeging van de <p> tags. Dit wil ik op één of andere manier automatisch hebben als het niet om een xlink tag gaat output = output + "<p>" + reader.ReadString(); } if (reader.Name == "crosslink") { string link = reader.GetAttribute("refid"); string titel = reader.ReadString(); output = output + "<a href='Default.aspx?plannummer=" + plannummer + "&identificatie=" + identificatie + "&text_detail=" + link + "'>" + titel + "</a>"; } if (reader.Name == "p" && reader.NodeType == XmlNodeType.EndElement) { output = output + "</p>"; } } return output; } |
Is er een manier om alle tags die gewoon html zijn te laten voor wat ze zijn en ze compleet toe te voegen in de output string zonder alles handmatig in te voeren?
[ Voor 8% gewijzigd door TricTrac op 24-05-2006 11:29 ]