我已经编写了一个vbscript,它从模板中将一个新的Group和User注入到FileZilla Server.xml中 - 用一个参数替换组名和用户名...重新启动服务,然后它会出现在filezilla服务器中作为新帐户/指定文件夹...
只需简单的opentextfile,直到< / GROUPS>或者< / USERS&gt ;,注入代码,保存到新文件名。工作正常。
然后我编写了一些代码来删除这些Group和User元素(如果需要的话)...使用XML DOM。它工作正常,它完成了工作...但是,当我接着插入一个新记录(如上所述)时,它无法写入XML文件,因为它无法再找到< / GROUPS>或者< / USERS> ...我可以添加wscript.echo来显示正在处理的行,这些元素出现......但不会被操作,就像它看不到它们一样。
XML文件的保存方式有什么问题吗?它在记事本中显得很好。 Anythign与UTF或ASCII有关吗?我想知道是否删除类似于我如何添加它们的元素...读取直到某个点然后在将它们写入另一个文件时跳过这些行。
代码:检查元素(也尝试过Instr,在XMLDOM Save更新后无法找到它。
Do Until f1.AtEndOfStream
strLine = f1.ReadLine
If trim(strLine) = "</Groups>" Then
If GroupExists="False" Then
Set f2 = objFSO.OpenTextFile(templatepath&filetemplate,1)
。 。 。 。
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
objXMLDoc.load(filezillapath&filezilla)
Set objRoot = objXMLDoc.documentElement
Set objLst = objXMLDoc.selectSingleNode("//Groups/Group[@Name='" & strNewAccount & "']")
If objLst.Length > 0 Then
objLst.parentNode.removeChild(objLst)
objXMLDoc.Save(filezillapath&filezilla)
End If
Set objRoot = objXMLDoc.documentElement
Set objLst = objXMLDoc.selectSingleNode("//Users/User[@Name='" & strNewAccount & "']")
'If objLst.Length > 0 Then
objLst.parentNode.removeChild(objLst)
objXMLDoc.Save(filezillapath&filezilla)
'End If
Set objXMLDoc = Nothing
答案 0 :(得分:1)
您
Set objLst = objXMLDoc.selectSingleNode("//Groups/Group[@Name='" & strNewAccount & "']")
If objLst.Length > 0 Then
看起来很可疑。根据{{3}}(参见docs),selectSingleNode()返回一个节点或Nothing。所以试试
Set ndX = objXMLDoc.selectSingleNode(...)
If ndX Is Nothing Then
message
Else
action
End If
顺便说一句: