posts - 36, comments - 30, trackbacks - 0, articles - 0

vtd-xml ximpleware小记

Posted on 2008-04-21 16:46 vcommon 阅读(1475) 评论(1)  编辑 收藏 引用

VTD xml以下一代xml的处理著称,xsimpleware是一个java开源的VTD xml parser,已经移植到C/c#上.

使用小记:
VTDGen *vg = NULL;
 VTDNav *vn = NULL;
 UCSChar *string = NULL;
  vg = createVTDGen();
  if (parseFile(vg,TRUE,"G:\\ximpleware_2.4_c\\ximpleware_2.4_c\\vtd-xml\\examples0\\debug\\input.xml")){
   vn = getNav(vg);
   if (toElementNS(vn,FIRST_CHILD,L"someURL",L"b")){
    int i = getText(vn);
    if (i!=-1){
     string = toString(vn,i);
     wprintf(L"the text node value is %d ==> %s \n",i,string);
     free(string);
    }
   }
   free(vn->XMLDoc);
  } else {
   free(vg->XMLDoc);
  }

VTD的效率在DOM和SAX比较上应该是最高的,我认为效率高不等于该用。
VTD抽象出来的数据使xml的处理由简单变为复杂,违背了xml的初衷。
应该在程序设计上把xml简化或者分为多个xml的方法,分阶段和时间处理,合理释放不使用的xml ,始程序达到最优,
这要比为了效率而将xml处理变成晦涩的处理 更加有意义。

xsimpleware并不晦涩,相反在某方面来说还是相当好用的,提供了XPath的查找,相当的方便。
xsimpleware的优势在于对大xml文件处理的效率和对xml的复制,粘贴等操作,对parser和处理xml语义方面要比 DOM或者SAX弱的多。

Feedback

# re: vtd-xml ximpleware小记  回复  更多评论   

2008-12-05 00:45 by Yu
VTD提供了另外一种使用XML的model方法(基于XPATH),正如push parser和pull parser是另外两种XML使用model。

你所说的“应该在程序设计上把xml简化或者分为多个xml的方法,分阶段和时间处理”我不是很理解,意指streaming processing吗?能否给一些具体例子吗?多谢(为什么要这么做?)
另外,我的EMAIL:yu.cubby@126.com, 欢迎来信讨论。
只有注册用户登录后才能发表评论。