Java DomHandler可捕获多条记录的文本

Java DomHandler可捕获多条记录的文本,java,xml,jaxb,Java,Xml,Jaxb,我试图将@xmlanyement与DomHandler结合使用,以捕获特定字段中未解析的文本,如Blaise Doughan的示例所示。但是,当我试图解析多个客户时,来自所有以前记录的bio字段的内容将继续发送到我的DomHandler 下面是我试图解析的示例文档: <?xml version="1.0" encoding="UTF-8"?> <customers> <customer> <name>Jane Doe</nam

我试图将@xmlanyement与DomHandler结合使用,以捕获特定字段中未解析的文本,如Blaise Doughan的示例所示。但是,当我试图解析多个客户时,来自所有以前记录的bio字段的内容将继续发送到我的DomHandler

下面是我试图解析的示例文档:

<?xml version="1.0" encoding="UTF-8"?>
<customers>
   <customer>
     <name>Jane Doe</name>
     <bio>
       <html>Jane's bio</html>
     </bio>
   </customer>
   <customer>
     <name>John Doe</name>
     <bio>
       <html>John's bio</html>
     </bio>
   </customer>
</customers>
客户

package blog.domhandler;

import java.util.List;

import javax.xml.bind.annotation.XmlAnyElement;
import javax.xml.bind.annotation.XmlRootElement;
import javax.xml.bind.annotation.XmlType;

@XmlRootElement
public class Customers {

    private List<Customer> customers;

    public List<Customer> getCustomer() {
        return customers;
    }

    public void setCustomer(List<Customer> c) {
        this.customers = c;
    }

}
当我在BioHandler.getElement()中放置断点时,我看到它的被调用字符串xml第一次接受该值

<?xml version="1.0" encoding="UTF-8"?><bio><html>Jane's bio</html>
    </bio>
<?xml version="1.0" encoding="UTF-8"?><bio><html>Jane's bio</html>
    </bio><?xml version="1.0" encoding="UTF-8"?><bio><html>John's bio</html>
    </bio>
简的简历
而第二次调用字符串时,xml接受该值

<?xml version="1.0" encoding="UTF-8"?><bio><html>Jane's bio</html>
    </bio>
<?xml version="1.0" encoding="UTF-8"?><bio><html>Jane's bio</html>
    </bio><?xml version="1.0" encoding="UTF-8"?><bio><html>John's bio</html>
    </bio>
简的简历
约翰的简历

是否有某种方法可以向解析器表明,在每次调用BioHandler.getElement()之后,应该丢弃此内容?

结果证明,我的问题是通过本示例所引用的帖子上的第一条评论得到了回答。BioHandler.createUnmarshaller()的代码应为:

public StreamResult createUnmarshaller(ValidationEventHandler errorHandler) {
    xmlWriter.getBuffer().setLength(0);
    return new StreamResult(xmlWriter);
}
<?xml version="1.0" encoding="UTF-8"?><bio><html>Jane's bio</html>
    </bio><?xml version="1.0" encoding="UTF-8"?><bio><html>John's bio</html>
    </bio>
public StreamResult createUnmarshaller(ValidationEventHandler errorHandler) {
    xmlWriter.getBuffer().setLength(0);
    return new StreamResult(xmlWriter);
}