我有一个 TNT XML 请求,我从 Microsoft Access 2003 数据库发送到他们的 XML API 服务器以检索标签。发回给我的响应必须使用 XSLT 进行翻译。问题是我收到的响应包含每个引用短语的两个双引号,而不是一个。我需要修改 HTML 以使其正常显示,两边各有一个双引号。
只是举一个例子说明这是什么样的:
<META http-equiv=""Content-Type"" content=""text/html"">
<title>TNT Label</title><script type=""text/javascript"">
if (firstPagePrinted) {
document.writeln('<div class=""pagebreak"">');
document.writeln('<font size=""1"" color=""#FFFFFF"">.</font>');
我已经尝试在各种变体中多次使用 replace()。我已经使用了“的 ASCII Chr(34) 表示,以及 Unicode CHrW(&H22)。这些只是我尝试解决这个问题的一些不成功的例子:
Replace(strResult, Chr(34), ChrW(&H22))
Replace(strResult, """", ChrW(&H22))
Replace(strResult, """", "")
这是我用来转换和保存 XML 文档的代码:
Dim strResponse, strDisplayString, strSQL, desktopPath As String
Dim sTNTXML, sResponseXML, nodeList, strResult
Dim objRequest As New MSXML2.ServerXMLHTTP
objRequest.Open "POST", "https://iConnection.tnt.com/ShipperGate2.asp", False, "", ""
objRequest.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
objRequest.setRequestHeader "Accept", "*/*"
objRequest.setRequestHeader "User-Agent", "ShipperGate_socket/1.0"
objRequest.setRequestHeader "Host", "iConnection.tnt.com"
objRequest.setRequestHeader "Content-Length", CStr(Len(sTNTXML)) + 7
DoCmd.Hourglass True
objRequest.send "xml_in=GET_LABEL:" & modTNTShipping.completeNum
sResponseXML = objRequest.responseText
DoCmd.Hourglass False
Dim mydoc As New MSXML2.DOMDocument60
mydoc.async = False
mydoc.loadXML (sResponseXML)
Dim stylesheet As New MSXML2.DOMDocument60
stylesheet.async = False
stylesheet.Load "http://iconnection.tnt.com:81/Shipper/NewStyleSheets/label.xsl"
Dim result As New MSXML2.DOMDocument60
result.async = False
strResult = mydoc.transformNode(stylesheet)
Dim strQuote As String
strResult = Replace(strResult, Chr(34), ChrW(&H22))
Open "C:\users\chris\desktop\TNTLabel.html" For Output As #1
Write #1, strResult
Close #1
如果有人可以建议缓解这个问题(即使它不使用 Replace()),我将不胜感激。