vbs changes < to> to > when importing file cont

2020-05-01 09:42发布

I have absolutly no idea when it comes to VBScript so I was quite happy when I frankensteined two simple code snippets found online to insert the entire contents of a text file into a XML document.

All works well except my < have changed to &lt; and my < has changed to &gt;.

How can I overcome this?

My code:

Const ForReading = 1

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.OpenTextFile("C:\test.txt", ForReading)

strText = objTextFile.ReadAll
objTextFile.Close

Set xmlDoc = CreateObject("Microsoft.XMLDOM")

xmlDoc.Async = "False"
xmlDoc.Load("C:\Audits.xml")

Set colNodes = xmlDoc.SelectNodes("/TOOLS")

For Each objNode In colNodes
   objNode.text = (strText)
Next

xmlDoc.Save "C:\Audits.xml"

标签: xml vbscript
2条回答
聊天终结者
2楼-- · 2020-05-01 09:49

You don't "overcome" this. < and > characters must be encoded, otherwise there'd be issues with parsing the XML tags (which are demarcated by angular brackets, i.e. < and > characters).

查看更多
家丑人穷心不美
3楼-- · 2020-05-01 10:11

A CDATA section allows < and >:

CDATA sections allow developers to include the markup characters <, >, and & within element content without using character or entity references. Scripts, style sheets, program code, and sample XML code are frequently contained in CDATA sections.

(Docs)

Code:

  Dim oXML : Set oXML = CreateObject("Msxml2.DOMDocument")
  Set oXML.documentElement = oXML.createElement("a")
  Dim nd
  Set nd = oXML.createElement("b")
  nd.appendChild oXML.createTextNode("<>")
  oXML.documentElement.appendChild nd
  Set nd = oXML.createElement("c")
  nd.appendChild oXML.createCDATASection("<>")
  oXML.documentElement.appendChild nd

output:

<a><b>&lt;&gt;</b><c><![CDATA[<>]]></c></a>
查看更多
登录 后发表回答