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")
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")
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
%>