如元素<aaa>5264266SERFWFD</aaa>
有时候会解析时aaa元素的值只会得到一部分(如得到‘4266SERFWFD’)前三位没得到,也可能得到中间的某一部分。谁有解决办法?谢谢在网上找这样一段话,但没说怎么解决:
SAX解析XML使用SAX解析XML需要注意的地方:
一个Element的内容有可能被分割成多个部分(即多次调用characters()函数)。
比如:
<name>xxxxxxcccccccccccccoooooooooo</name>
当元素name被解析之后,xxxxxxcccccccccccccoooooooooo可能被拆分成几段分别调用characters()函数,而不是全部一次性传递给characters()函数。

解决方案 »

  1.   

    那你就多调用几次characters函数呗 然后将结果拼起来
      

  2.   

    楼上你用dom4j解析大文档的代码能不能贴上来参考下,谢谢
      

  3.   

    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import org.w3c.dom.NodeList;
    import org.w3c.dom.Node;
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;String url="文件路径";
    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
      //指定经过验证的解析器。dbf.setValidating(true);
      // 需要加载 DTD。//获取工厂中 DocumentBuilder 的实例。   DocumentBuilder db = dbf.newDocumentBuilder();
      //解析文档。   Document doc = db.parse(url);
      NodeList e=doc.getElementsByTagName("person");
      if(e!=null)
    {
    for(int i=0;i<e.getLength();i++)
    {
    Node book=e.item(i);
    if(book.getNodeType()==Node.ELEMENT_NODE)
    {
    NodeList mname=doc.getElementsByTagName("name");
    Node mainName=mname.item(i);
    System.out.println("名字="+mainName.getFirstChild().getNodeValue());


    NodeList msex=doc.getElementsByTagName("sex");
    Node mainsex=msex.item(i);
    System.out.println("性别="+mainsex.getFirstChild().getNodeValue());

    NodeList mage=doc.getElementsByTagName("age");
    Node mainage=mage.item(i);
    System.out.println("性别="+mainage.getFirstChild().getNodeValue());
    }
    }
    }一下是xml文件的内容:
    <?xml version="1.0" encoding="gb2312"?>
    <family>
    <person>
    <name>meimei</name>
    <sex>female</sex>
    <age>20</age>
    </person>
    <person>
    <name>meinv</name>
    <sex>female</sex>
    <age>22</age>
    </person>
    </family>
      

  4.   

    楼上的朋友,你那用的是dom解析,由于我解析的文档很大,用dom不行,会内存溢出,有没有sax解析大文件的代码.我遇到的问题不知道你们碰到过没,就是如标题所说的那样的问题
      

  5.   

    你的characters方法是怎么写的,贴出来看看
      

  6.   

    楼主问题解决了吗?把characters方法贴出来看看呗,
      

  7.   

    多谢楼上的热心朋友,问题已经得到解决,是因为characters方法没用StringBuffer变量保存的问题,直接赋值有可能会解析器有可能会分两次去取,困扰了我两天了,散分了,多谢朋友们~!