Tittar jag i access så är det radmatningar i texten. Men inga html-taggar. Är det kanske det jag saknar? I så fall hur ser jag till att den sparar det så?
Ville bara påpeka att inte göra misstaget att ersätta alla VbCrLf i databasen mot <br> (alltså så att det står <br> i databasen), för då förlorar själva dynamiken sin mening.
Det är bättre (och egentligen det enda vettiga) att skriva en funktion som @nders gjorde, och sedan inkludera denna på de sidor där du behöver den med include file. Försök alltid att gå efter att du aldrig skall behöva ändra något på mer än ett ställe i applikationen, varje gång du gör en ändring.
Ok. Tänkte att första inlägget förklarade mitt problem. Men jag försöker förklara igen:
Jag hämtar data får en XML-fil. I den har jag vanliga radmatningar:
Ex:
<data>
<huvudgrupp id="1000">
<produktgrupp id="100">
<produkt id="1">
<name>Vara Ett</name>
<antal>100</antal>
<info>Längre löpande text med lite radmatningar.</info>
</produkt>
<produkt id="2">
<name>Vara två</name>
<antal>200</antal>
<info>Längre löpande text med lite radmatningar.
Löpande text Löpande text Löpande text
Löpande text
Löpande text Löpande text Löpande text Löpande text Löpande text
Löpande text Löpande text.</info>
</produkt>
</produktgrupp>
</huvudgrupp>
</data>
Jag hämtar texten med bl.a:
Set objNamedNodeMapPG = xmlDoc.documentElement.childNodes(I).childNodes(J)
intPGAttId = objNamedNodeMapPG.attributes.getNamedItem("id").text
intPGAttName = objNamedNodeMapPG.attributes.getNamedItem("name").text
och skriver ut den med:
Response.Write "new Array(""" & intPGAttName & """, " & intPGAttId & ")," & vbCrLf
Men då visas texten löpande. Dvs. utan radbrytningar. Tittar jag på "visa källa" så finns det radbrytningar men inga <br>. Så browsern kan ju inte visa rätt.
Du skulle kunna prova med vbCr eller vbLf i stället, om det råkar vara så att du fått en icke-Windows-radbrytning. Eftersom du ser radbrytningar i källan så finns det i alla fall någon form av radbrytning.
Kom visst in på rätt spår. XML-filen är visst binär enligt denna tråd.
Så Chr(10) var lösningen.
function fixRadmatningar(fix)
fixRadmatningar = Replace(fix, [B]Chr(10)[/B], "<br>")
end function
strInfo = fixRadmatningar(strInfo)
response.write strInfo
Tack emission för dina försök!
Är en XML-fil alltid binär? Eller hur funkar det?
Jag har precis som erik_nordell i tråden ovan Microsoft.XMLDOM. Är det bra eller ska man använda annat?
Dim xmlDoc, fil
set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async="false"
fil=Server.mappath("" & strXMLfile_products & "")
xmlDoc.load(fil)
CR står för Carriage Return (vagnretur), LF för Line Feed
fedde skrev:
Tack emission för dina försök!
Tack för tack :)
fedde skrev:
Är en XML-fil alltid binär?
Nej, en XML-fil är aldrig binär (i strikt mening är alla filer binära, men inte i den mening som brukar avses med distinktionen textfil/binärfil). Det som avsågs i den andra tråden var nog att ett XML-dokument hämtats med XMLHTTP och plockats ut som binärdata mha responseBody.
Har du verkligen provat med vbLf?? vbLf är nämligen chr(10)!
Jag provade flera varianter (se nedan). Men nu när jag testade vidare så kom jag på att om jag även körde sista raden i funktionen så fungerar det inte. Det var det som sabbade det hela... Jag hade sista raden aktiv hela tiden...
:r Men jag är inte riktigt med på varför den raden sabbade det.
Så du tipsade helt rätt innan!!! :birp
function fixRadmatningar(fix)
'fixRadmatningar = Replace(fix, Chr(13), "<br>") 'Funkar ej
'fixRadmatningar = Replace(fix, Chr(10), "<br>") 'Funkar göörbra!!
'fixRadmatningar = Replace(fix, vbCrLf, "<br>") 'Funkar ej
'fixRadmatningar = Replace(fix, vbCr, "<br>") 'Funkar ej
fixRadmatningar = Replace(fix, vbLf, "<br>") 'Funkar också bra!!!
'fixRadmatningar = Replace(fix, "¶", "<br>") 'Söker upp tillagda ¶-tecken på radslut
end function
Anledningen till att det inte funkade är att då var det bara den sista raden som gav resultat. Jag misstänker att det var detta du ville göra..
function fixRadmatningar(fix)
[blue]fix[/blue] = Replace(fix, Chr(13), "<br>") 'Funkar ej
[blue]fix[/blue] = Replace(fix, Chr(10), "<br>") 'Funkar göörbra!!
[blue]fix[/blue] = Replace(fix, vbCrLf, "<br>") 'Funkar ej
[blue]fix[/blue] = Replace(fix, vbCr, "<br>") 'Funkar ej
[blue]fix[/blue] = Replace(fix, vbLf, "<br>") 'Funkar också bra!!!
fixRadmatningar = Replace(fix, "¶", "<br>") 'Söker upp tillagda ¶-tecken på radslut
end function
Bör kanske tillägga att tecknet "¶" inte har något med radbrytningar att göra, annat än att det används för att visualisera sådana i t.ex. ordbehandlare. M.a.o behöver du inte ersätta det. Däremot kan det vara vettigt att ersätta även vbCrLf och vbCr, om du råkar på filer med sådana radbrytningar. Tänk på att du då måste ersätta vbCrLf först, annars kommer dessa att resultera i dubbla "<br>".
Bör kanske tillägga att tecknet "¶" inte har något med radbrytningar att göra, annat än att det används för att visualisera sådana i t.ex. ordbehandlare. M.a.o behöver du inte ersätta det. Däremot kan det vara vettigt att ersätta även vbCrLf och vbCr, om du råkar på filer med sådana radbrytningar. Tänk på att du då måste ersätta vbCrLf först, annars kommer dessa att resultera i dubbla "<br>".
Innan jag fick det att fungera så provade jag med att lägga till ¶-tecknet i slutet på varje rad i xml-filen och sedan ersätta det med <br> ASP-funktionen. Det funkade bra men var bara ett test.
Jag vet vad tecknet används till annars. Valde det tecknet bara för att jag var tvungen att ha ett tecken som normalt inte förekommer i en text. Annars skulle det bli radbrytningar lite här och var...
Allt funkar som sagt. :e Men jag vill förstå varför raderna stör ut varandra och man inte kan köra alla raderna tillsammans (kan vara bra att veta till ett annat tillfälle):
function fixRadmatningar(fix)
fixRadmatningar = Replace(fix, vbCrLf, "<br>")
fixRadmatningar = Replace(fix, vbLf, "<br>")
fixRadmatningar = Replace(fix, vbCr, "<br>")
fixRadmatningar = Replace(fix, "¶", "<br>") ' Denna raden "vinner" och de ovan funkar inte.
end function
När detta gör det? Vad spelar ordningen för roll?
function fixRadmatningar(fix)
fixRadmatningar = Replace(fix, "¶", "<br>")
fixRadmatningar = Replace(fix, vbCrLf, "<br>")
fixRadmatningar = Replace(fix, vbLf, "<br>")
fixRadmatningar = Replace(fix, vbCr, "<br>")' Denna raden "vinner" och "¶" funkar inte.
end function
Förresten, ditt sista förslag på funktionen funkar inte. Får ingen data tillbaka om jag skriver så.
266 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e