VBScript xmlDoc.save-isn';行不通
我正在使用VBScript编写一个ASP经典页面,每当写入Oracle数据库时发生错误,我都希望编写一个xml文件并将其保存到Web服务器上的目录中 以下是我所拥有的:VBScript xmlDoc.save-isn';行不通,xml,file-io,vbscript,asp-classic,Xml,File Io,Vbscript,Asp Classic,我正在使用VBScript编写一个ASP经典页面,每当写入Oracle数据库时发生错误,我都希望编写一个xml文件并将其保存到Web服务器上的目录中 以下是我所拥有的: Sub writeError(error) text="<xml>" text = text & vbCrLf &"<username>"¤tUser&"</username>" text=text & vbCrLf
Sub writeError(error)
text="<xml>"
text = text & vbCrLf &"<username>"¤tUser&"</username>"
text=text & vbCrLf & "<date>"&Now&"</date>"
text=text & vbCrLf & "<error>"&error&"</error>"
text=text & vbCrLf & "<xml>"
set xmlDoc=Server.CreateObject("Microsoft.XMLDOM")
xmlDoc.async=false
xmlDoc.loadXML(text)
xmlDoc.Save((Server.MapPath("xml/Error.xml")))
End sub
子写入错误(错误)
text=“”
text=text&vbCrLf&¤tUser&&
text=text&vbCrLf&&Now&&
text=text&vbCrLf&&error&&
text=text&vbCrLf&“
设置xmlDoc=Server.CreateObject(“Microsoft.XMLDOM”)
xmlDoc.async=false
loadXML(文本)
Save((Server.MapPath(“xml/Error.xml”))
端接头
这将获取用户名、当前时间和错误消息,并将其写入文件。我以前使用过几乎完全相同的函数,它工作得很好,所以我不确定这里发生了什么。有什么想法吗?这可能是您的结束xml标记 您还可以使用FSO以文本文件的形式编写,而不是使用XML activeX 像这样的
outFile="xml/Error.xml"
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.WriteLine "<xml>"
...
objFile.Close
outFile=“xml/Error.xml”
设置objFile=objFSO.CreateTextFile(outFile,True)
objFile.WriteLine“”
...
objFile.Close
它可能是您的结束xml标记
您还可以使用FSO以文本文件的形式编写,而不是使用XML activeX
像这样的
outFile="xml/Error.xml"
Set objFile = objFSO.CreateTextFile(outFile,True)
objFile.WriteLine "<xml>"
...
objFile.Close
outFile=“xml/Error.xml”
设置objFile=objFSO.CreateTextFile(outFile,True)
objFile.WriteLine“”
...
objFile.Close
正如您已经怀疑的那样,您正在获得该错误,因为您在字符串的末尾放置了另一个开头的
标记:
<xml>
<username>jbrown</username>
<date>01/13/2014 15:42:23</date>
<error>Your error message.</error>
<xml>
这会给你以下信息:
以下标记未关闭:xml,xml
不过,我不建议简单地将XML字符串写入文件,因为这样,在有人尝试使用该文件之前,无效的XML将不会被检测到。不要通过字符串连接来构造XML,而是使用适当的方法
Set rootNode=xmlDoc.CreateElement(“xml”)
设置userNode=xmlDoc.CreateElement(“用户名”)
userNode.text=currentUser
rootNode.AppendChild用户节点
Set dateNode=xmlDoc.CreateElement(“日期”)
dateNode.text=Now
rootNode.AppendChild日期节点
设置errorNode=xmlDoc.CreateElement(“错误”)
errorNode.text=错误
rootNode.AppendChild errorNode
xmlDoc.Save Server.MapPath(“xml/Error.xml”)
通过在函数中包装子节点创建,可以稍微简化这一点:
函数NewNode(名称、值)
Set node=xmlDoc.CreateElement(名称)
node.text=值
设置NewNode=node
端函数
Set rootNode=xmlDoc.CreateElement(“xml”)
rootNode.AppendChild NewNode(“用户”,currentUser)
rootNode.AppendChild NewNode(“日期”,现在)
rootNode.AppendChild NewNode(“错误”,error)
xmlDoc.Save Server.MapPath(“xml/Error.xml”)
另一方面,我想建议另外两种修改:
Microsoft.XMLDOM
已过时。改用Msxml2.DOMDocument.6.0
标记,您将获得该错误:
<xml>
<username>jbrown</username>
<date>01/13/2014 15:42:23</date>
<error>Your error message.</error>
<xml>
这会给你以下信息:
以下标记未关闭:xml,xml
不过,我不建议简单地将XML字符串写入文件,因为这样,在有人尝试使用该文件之前,无效的XML将不会被检测到。不要通过字符串连接来构造XML,而是使用适当的方法
Set rootNode=xmlDoc.CreateElement(“xml”)
设置userNode=xmlDoc.CreateElement(“用户名”)
userNode.text=currentUser
rootNode.AppendChild用户节点
Set dateNode=xmlDoc.CreateElement(“日期”)
dateNode.text=Now
rootNode.AppendChild日期节点
设置errorNode=xmlDoc.CreateElement(“错误”)
errorNode.text=错误
rootNode.AppendChild errorNode
xmlDoc.Save Server.MapPath(“xml/Error.xml”)
通过在函数中包装子节点创建,可以稍微简化这一点:
函数NewNode(名称、值)
Set node=xmlDoc.CreateElement(名称)
node.text=值
设置NewNode=node
端函数
Set rootNode=xmlDoc.CreateElement(“xml”)
rootNode.AppendChild NewNode(“用户”,currentUser)
rootNode.AppendChild NewNode(“日期”,现在)
rootNode.AppendChild NewNode(“错误”,error)
xmlDoc.Save Server.MapPath(“xml/Error.xml”)
另一方面,我想建议另外两种修改:
Microsoft.XMLDOM
已过时。改用Msxml2.DOMDocument.6.0
+1用于指出错误。但是,我不建议将手工编制的XML字符串写入文本文件。这只会延迟像OP那样的错误检测。谢谢你的评论!我试过了,但似乎还是不起作用。我只是让它简单地写,看看文件是否会写,什么都没发生我相信它挂在Set objFile行上。我放了一个响应。在它之后直接写,什么都没有发生。+1用于指出错误。但是,我不建议将手工编制的XML字符串写入文本文件。这只会延迟像OP那样的错误检测。谢谢你的评论!我试过了,但似乎还是不起作用。我只是让它简单地写,看看文件是否会写,什么都没发生我相信它挂在Set objFile行上。我写了一个回复。直接写在后面,什么都没有发生。谢谢你的建议。但奇怪的是,这仍然没有写入文件