2015-03-03 113 views
0

我想從2014-07-15T00:00:00-05:00從下面的xml獲取記錄。我如何使用vbscript實現這個?目前我正在使用這個,但不工作。從xml按日期過濾記錄

集colNodes = xmlDoc.selectNodes _
「( 「// XYZ/ABC [日期> '2014-07-14T00:00:00-05:00']」)

<xyz> 
<abc> 
<date>2014-07-14T00:00:00-05:00</date> 
<text>test1</text> 
</abc> 
<abc> 
<date>2014-07-14T00:00:00-05:00</date> 
<text>test2</text> 
</abc> 
<abc> 
<date>2014-07-15T00:00:00-05:00</date> 
<text>test3</text> 
</abc> 
<abc> 
<date>2014-07-15T00:00:00-05:00</date> 
<text>test4</text> 
</abc> 
<abc> 
<date>2014-07-15T00:00:00-05:00</date> 
<text>test5</text> 
</abc> 
</xyz> 

回答

0

服用從an answer to a related question鉛,我想這和它似乎工作:

Option Explicit 

dim xml: xml = "<xyz><abc><date>2014-07-14T00:00:00-05:00</date><text>test1</text></abc><abc><date>2014-07-14T00:00:00-05:00</date><text>test2</text></abc><abc><date>2014-07-15T00:00:00-05:00</date><text>test3</text></abc><abc><date>2014-07-15T00:00:00-05:00</date><text>test4</text></abc><abc><date>2014-07-15T00:00:00-05:00</date><text>test5</text></abc></xyz>" 

'note version 6.0 of the DOM Document 
dim xmldoc: set xmldoc = CreateObject("MSXML2.DomDocument.6.0") 
xmldoc.async = false 
' error check your XML, quit 
if not xmldoc.loadXML(xml) then 
    WScript.Echo xmldoc.parseError.reason 
    WScript.Quit 1 
end if 

dim nodes: set nodes = xmldoc.selectNodes("//xyz/abc[number(translate(date, '-.:T', ''))>number(translate('2014-07-14T00:00:00-05:00', '-.:T', ''))]") 

' put results into fragment because we won't have a full valid XML document 
dim frag: set frag = xmldoc.createDocumentFragment() 
dim node 
for each node in nodes 
    frag.appendChild node 
next 'node 
' use result 
WScript.Echo frag.xml 

訣竅是認識到XPath和XSL 1.0似乎不支持的DateTime類型,所以運行數字比較,我們從帶任何標點符號在con之前使用translate()的數據值轉向一個數字。

與此相關的一個問題是,它不考慮您的時區組件,因此,如果日期完全不同於時區,則可能會得到不正確的結果。至少這是一個起點。