花了2個小時終于把XPath的數據結構和語法分析做完了。這個XPath的語法完全按照MSDN所說的做,除了減少了2個跟DTD相關的函數和11個Microsoft擴展的"ms:"開頭的函數以外,剩下的功能將一概支持。
代碼寫完了之后,我打開MSDN找里面的幾十條XPath Example進行測試,發現了一些Bug,然后修正。現在MSDN所列舉的所有例子都通過了,接下來只有自己寫Example進行測試了。因為MSDN的例子并沒有覆蓋所有等價類。
下面是運行結果和測試程序的代碼:
#include "..\..\..\..\Library\Platform\VL_Console.h"
#include "..\..\..\..\Library\Data\VL_System.h"
#include "..\..\..\..\Library\Data\VL_Stream.h"
#include "..\..\..\..\Library\XML\VL_XML.h"
using namespace vl;
using namespace vl::platform;
using namespace vl::system;
using namespace vl::stream;
using namespace vl::xml;
void vlmain(VL_Console& Con)
{
Con.SetPauseOnExit(false);
Con.SetTestMemoryLeaks(true);
Con.SetTitle(L"Vczh XML");
while(true)
{
VUnicodeString XPathExpression;
Con.Write(L"輸入XPath:");
Con.Read(XPathExpression);
if(XPathExpression==L"")
{
break;
}
else
{
try
{
VL_XPath XPath(XPathExpression);
Con.Write(XPath.ToString());
}
catch(VL_XPathError& e)
{
Con.Write(L"錯誤:"+e.Message+L"\r\n");
Con.Write(L"位置:"+XPathExpression.Left(e.Start)+L"\r\n");
}
}
Con.Write(L"--------------------------------------------------------------------------------");
}
}
等考完《軟件測試方法和技術》之后把查詢功能寫完。
posted on 2008-06-21 00:34
陳梓瀚(vczh) 閱讀(2453)
評論(2) 編輯 收藏 引用 所屬分類:
C++