roadyMedlem sedan jan. 2002473 inlägg Hej, testar att ladda en xml fil, loopa igenom och lägga till CDATA i varje nodeValue. Behöver lite hjälp här.
Problemet är att den spara inte över själva node värdet utan lägger allt i rooten, vill ju bara ändra om det är ett nodeValue och inte när det är en , vad man nu säger, någon som har en massa childs.
Tack på förhand.
dim flashString,xmlObj,objLst
flashString = Request.QueryString("XML")
set xmlObj = Server.CreateObject("Microsoft.XMLDOM")
xmlObj.async=false
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
'xmlObj.loadXML(flashString)
xmlObj.load(Server.MapPath(".")+"\"+flashString)
If xmlObj.parseError.errorCode <> 0 Then
Response.Write(xmlObj.parseError.errorCode)
End If
Set objLst = xmlObj.getElementsByTagName("*")
response.Write(objLst.length)
For i = 0 to objLst.length-1
dim nodeText
nodeText = objLst.item(i).text
Response.Write("<br>"+nodeText)
objLst.item(i).text = "<![CDATA["+nodeText+"]]>"
Next
xmlObj.save(Server.MapPath(".")+"\myXML_1.xml")
roadyMedlem sedan jan. 2002473 inlägg uppdatering...
Den loopas och gör allt rätt förutom att den automatiskt html encodar när värdet sparas om till xml filen, hur kan jag behålla utf-8 i asp???
dim flashString,xmlObj,objLst
flashString = Request.QueryString("XML")
set xmlObj = Server.CreateObject("Microsoft.XMLDOM")
xmlObj.async=false
xmlObj.load(Server.MapPath(".")+"\"+flashString)
If xmlObj.parseError.errorCode <> 0 Then
Response.Write(xmlObj.parseError.errorCode)
End If
Set objLst = xmlObj.getElementsByTagName("*")
For i = 0 to objLst.length-1
If objLst(i).firstChild.HasChildNodes Then
Else
dim nodeText
nodeText = objLst(i).firstChild.nodeValue
'Response.Write("<br>" & nodeText)
pre = "<![CDATA["
post = "]]>"
objLst(i).firstChild.nodeValue = pre & nodeText & post
End If
Next
xmlObj.save(Server.MapPath(".")+"\myXML_1.xml")
roadyMedlem sedan jan. 2002473 inlägg Ghaaaa, jag är hettsig och blir galen, av allt jag testat så funkar koden suveränt. Problemet är fortfarande att den slutgiltiga XML filen får html encodad text i sina node values.
Problemet verkar vara själva sparningen.
mlObj.save(Server.MapPath(".")+"\myXML_1.xml")
Finns det något annat sätt, kollade lite på ADODB.Stream och där verkar det som man kan sätta strömmen till utf-8, men jag får det inte att funka, på något sätt måste man då få xml objektet till strömmen och spara ner.
<%@ CodePage=65001 Language="VBScript"%>
<%
Response.CodePage = 65001
Response.CharSet = "utf-8"
dim flashString,xmlObj,objLst,nodeText
flashString = Request.QueryString("XML")
set xmlObj = Server.CreateObject("Microsoft.XMLDOM")
xmlObj.async=false
xmlObj.load(Server.MapPath(".")&"\"&flashString)
If xmlObj.parseError.errorCode <> 0 Then
Response.Write(xmlObj.parseError.errorCode)
End If
Set objLst = xmlObj.getElementsByTagName("*")
For i = 0 to objLst.length-1
If objLst(i).firstChild.nodeType = 3 Then
nodeText = objLst(i).firstChild.nodeValue
pre = "<![CDATA["
post = "]]>"
objLst(i).firstChild.nodeValue = pre & nodeText & post
End If
Next
%>
roadyMedlem sedan jan. 2002473 inlägg Någon som har tips på hur man kan lösa detta på annat sätt...
Alltså,
1.) få POST eller ladda in en xml fil.
2.) Gå igenom varje XML node och lägga till CDATA
3.) Spara xml filen
//Bäcker