问题在于,我将根据其子节点的值删除XML父节点,其值是ProcessDate作为日期格式。
我想提出的条件是:
ProcessDate比星期前更早的节点。以下代码如下:
Dim strFile
Dim strQuery
weekdate = Day(Date < Date-7) & "/" & Month(Date) & "/" & Year(Date)
strFile = "D:\Log.xml"
strQuery = "/Logs/Log[ProcessDate = '" & weekdate & "']"
Set xmlDoc = WScript.CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.Load(strFile)
Set colNodes = xmlDoc.selectNodes(strQuery)
For Each objNode In colNodes
objNode.ParentNode.removeChild(objNode)
Next
xmlDoc.Save strFile下面是图像示例

发布于 2017-02-23 13:14:20
Day(Date < Date-7)这个短语不像你想的那样。Date < Date-7的计算结果为布尔值False (因为当前日期从未少于7天前的日期),Day(False)总是返回30。而且,VBScript似乎不支持XML2.0函数,因此不能通过XPath将XML值转换为日期进行比较。
您需要获取<ProcessDate>节点的值,将其转换为日期,并在日期超过7天之前从其祖父母节点中移除其父节点。试着做这样的事情:
For Each n xmlDoc.SelectNodes("//ProcessDate")
If CDate(n.Text) < Date - 7 Then
n.ParentNode.ParentNode.RemoveChild(n.ParentNode)
End If
Nexthttps://stackoverflow.com/questions/42413468
复制相似问题