我使用xerces来解析XML文件,用getFirstChild和getNextSibling来遍历所有的child。但是在这些children里面会多出来很多node,类型是DOMText,用getNodeName得到一个#text,几乎所有的node上面都有一个这样的多余的东西。请问这些多余的node用什么方法来去掉比较的合适呢。

解决方案 »

  1.   

    #text在你的xml文件中有吗?还是解析过后在正确节点名前加了#text?如xml文件中节点是node1;解析过后是#textnode1..
      

  2.   

    解析之后才有的,在每一个节点前面都多了一个#Text
      

  3.   

    http://www.cnblogs.com/scq2099yt/category/121708.html
      

  4.   


    我不是用MSXML的库,用的是xerces的库。还有,我已经找到一个方法,如果在XML文件种定义了schema,则可以用代码消除这个多余的节点,但是问题是我要解析的XML文件都是由别的系统提供的,没有这些schema。
      

  5.   

    自己把问题解决了。
    setDoNamespaces( true );
    setDoSchema( true );
    setValidationScheme( XercesDOMParser::Val_Auto );
    setIncludeIgnorableWhitespace( false );
    在验证Schema文件存在的情况下,并且在xml中指定了验证文件,就可以去掉多余的text节点。
    如果没有验证文件,则需要自己根据xml的内容写验证文件,然后通过setExternalNoNamespaceSchemaLocation函数来设置验证文件。