yuhuanworkroom

常用链接

统计

最新评论

XPath 校验工具

        XML是一套定义语义标记的规则,这些标记将文档分成许多部件并对这些部件加以标识。由于XML具备诸多的优点,XML被越来越为广泛地使用。

        我们开发员更是会经常使用XML来存储信息或者交换数据,而XPath是用来高效处理XML文档的方法。XPath是种可以在XML文档中查找信息的语言,可以通过XPath表达式在XML文档中快速定位。相比一层层节点的递归来说,它的代码可读性更高,易维护,效率高。而且XQuery和XPointer也是建立在XPath之上,所以在应用开发中使用XPath频率会比较高。
        写一个简单的XPath到不是一件难事,或许也可以不调试跟踪。但对于复杂的文档或XPath表达式,最好先验证,难通过跟踪调试的方式来确定正确性的方式是不可取的。XPath Tester工具就是一个验证XPath正确性的工具,它是基于MSXML实现。

安装环境:
OS:windows xp及以上。

        这个工具的实现较简单,可以很容易地写出来。稍难的可能是处理名字空间的方法,下面附上这部份源码。
 1     LPCTSTR g_szSelectionLanguage = _T("SelectionLanguage");
 2     LPCTSTR g_szXPath =_T("XPath");
 3     LPCTSTR g_szXmlns = _T("xmlns:");
 4     LPCTSTR g_szSelectionNamespaces =_T("SelectionNamespaces");
 5     TCHAR g_cComma = _T(',');
 6 
 7     void ParseXmlns(MSXML2::IXMLDOMDocument2Ptr &docPtr, LPCTSTR szXmlns)
 8     {
 9         int nLen;
10         if(!szXmlns ||  (nLen = _tcslen(szXmlns))== 0)
11         {
12             return;
13         }
14 
15         docPtr->setProperty(g_szSelectionLanguage, g_szXPath);
16         const short BUFFLEN = 200;
17         TCHAR szNameBuf[BUFFLEN];
18         TCHAR *pStart = const_cast<TCHAR*>(szXmlns);
19         TCHAR *pEnd = _tcschr(pStart, g_cComma);
20
21         bool bQuit = false;
22         while (nLen && !bQuit)
23         {
24             if(!pEnd)
25             {
26                 pEnd = pStart + nLen;
27                 bQuit = true;
28             }
29             ZeroMemory(szNameBuf, sizeof(szNameBuf));
30             _tcsncpy_s(szNameBuf, BUFFLEN, pStart, pEnd - pStart);
31             if(_tcsnicmp(szNameBuf, g_szXmlns, _tcslen(g_szXmlns)) == 0)
32             {
33                 docPtr->setProperty(g_szSelectionNamespaces, szNameBuf);
34             }
35 
36             pStart = pEnd + 1;
37             pEnd = _tcschr(pStart, g_cComma);
38             nLen = _tcslen(pStart);
39         }
40     }

下载: http://www.91box.net/?BOERZFW76FD5GAOJNYUI
MD5:    96046c78f572f669aa8c600c1a6b06e5

posted on 2009-10-15 23:37 yuhuan 阅读(3025) 评论(0)  编辑 收藏 引用 所属分类: SoftWare


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理