带有XmlPath查询条件读取XML文件中的特定节,用XmlDocument和XmlReader哪个好点?是不是XmlReader效率高些?

解决方案 »

  1.   

    只是做xpath查询的话更喜欢用XmlDocument的XmlNode和XmlNodeList。
      

  2.   

    XmlDocument将文档一次载入内存...类似DataSet...如果文档较大比较吃资源...
    XmlReader是只读只进阅读器...类似于DataReader...适用范围有限...哪个效率更高由需求而定...读取特定节的话内容一般都不会太大...XmlDocument更灵活...
      

  3.   

    XmlReader占用极少的内存,是只读方式的,所以速度极快.XmlDocument是包干式的,占用内存大,处理方便,可读可写,几乎想当于一次把Xml读入内存.所以:
    如果数据量极大,和XmlReader合适,
    如果处理复杂频繁且文件不大,XmlDocument合适
      

  4.   

    XmlReader占用极少的内存,是只读方式的,所以速度极快.XmlDocument是包干式的,占用内存大,处理方便,可读可写,几乎想当于一次把Xml读入内存.所以:
    如果数据量极大,和XmlReader合适,
    如果处理复杂频繁且文件不大,XmlDocument合适说的很对,看具体应用了
      

  5.   

    谢谢!我有一下几点说明:
    1、我的处理文件中等吧,也就是语言文件包,不算小,大概也有600多K吧。
    2、每次读取是根据提供的信息,读取指定节的内容,XML结果如下:
    <root>
    <phrasegroup name="group1">
    <phrase name="phrase1"></phrase>
    <phrase name="phrase2"></phrase>
    </phrasegroup>
    <phrasegroup name="group2">
    <phrase name="phrase3"></phrase>
    <phrase name="phrase4"></phrase>
    </phrasegroup>
    </root>
    读取的时候就根据提供的group来读取特定节的内容,比如,group2我就读取该节下的内容,这应该算个很简单的查询吧。
    至于说频繁处理的话,因为这个读取XML内容的代码是写成一个函数的,这个函数有可能会有多次调用。但是如果用XmlDocument的话,每次调用,其实也是都装载了一次。如果用XmlReader的话,我似乎也要循环读取,直到读取到我需要的节。我主要是想知道哪个效率高些(执行速度),因为文件大概也有600多K,不算小文件吧。谢谢指点。
      

  6.   

    论性能肯定xmlreader高 另外也要看你是不是需要重复搜寻节点 如果需要可以比较一下和XmlDocument的实际差别 由实际场景确定
      

  7.   

    谢谢!个人测试,很难做出准确的测试,所以才听过来者的意见。
    看来大家都认为用XmlReader性能要好些哟。如果用XmlReader的话,假设我需要读取的节是最后一节,这样也需要从头到尾读取每个节,然后判断是否是我需要的节,如果不是就继续读取,直到最后。这样的情况下,性能会不会低呀?谢谢!
      

  8.   

    晕,我以前看到说XmlDocument只能用于读取文件大小在1M以下的XML文件。但是刚刚我测试了一个29M的XML文档,照常能够读取和查询,并且耗时也就2秒呀。
      

  9.   

    如果只为了读取而已就用XmlReader,只读向前,耗费内存小,效率高,如果要修改或其他动作,就用XmlDocument
      

  10.   

    不需要其它操作,只是读取,只是读取指定的节信息,也就是要用到简单的XmlPath