首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以XML为参数将条件置于特定的时间范围内

以XML为参数将条件置于特定的时间范围内
EN

Stack Overflow用户
提问于 2017-02-23 10:44:47
回答 1查看 119关注 0票数 0

问题在于,我将根据其子节点的值删除XML父节点,其值是ProcessDate作为日期格式。

我想提出的条件是:

  • 有大量的XML格式的数据,当用户执行VBScript时,它会自动删除ProcessDate比星期前更早的节点。

以下代码如下:

代码语言:javascript
复制
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

下面是图像示例

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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天之前从其祖父母节点中移除其父节点。试着做这样的事情:

代码语言:javascript
复制
For Each n xmlDoc.SelectNodes("//ProcessDate")
    If CDate(n.Text) < Date - 7 Then
        n.ParentNode.ParentNode.RemoveChild(n.ParentNode)
    End If
Next
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42413468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档