public void startElement(Txn transaction, ElementImpl element, NodePath path) { if (config != null) { boolean mixedContent = config.matchMixedElement(path); if (mixedContent || config.hasQNameIndex(element.getQName())) { ElementContent contentBuf = new ElementContent( element.getQName(), mixedContent || config.preserveMixedContent(element.getQName())); contentStack.push(contentBuf); } } super.startElement(transaction, element, path); }
public void endElement(Txn transaction, ElementImpl element, NodePath path) { if (config != null) { boolean mixedContent = config.matchMixedElement(path); if (mixedContent || config.hasQNameIndex(element.getQName())) { ElementContent contentBuf = (ElementContent) contentStack.pop(); element.getQName().setNameType(ElementValue.ELEMENT); engine.storeText( element, contentBuf, mixedContent ? NativeTextEngine.FOURTH_OPTION : NativeTextEngine.TEXT_BY_QNAME, null, mode == REMOVE_ALL_NODES); } } super.endElement(transaction, element, path); }
public void attribute(Txn transaction, AttrImpl attrib, NodePath path) { path.addComponent(attrib.getQName()); if (config == null || config.matchAttribute(path)) { engine.storeAttribute( attrib, null, NativeTextEngine.ATTRIBUTE_NOT_BY_QNAME, config, mode == REMOVE_ALL_NODES); } if (config != null && config.hasQNameIndex(attrib.getQName())) { engine.storeAttribute( attrib, null, NativeTextEngine.ATTRIBUTE_BY_QNAME, config, mode == REMOVE_ALL_NODES); } path.removeLastComponent(); super.attribute(transaction, attrib, path); }
/** * @param transaction * @param text * @param path */ public void characters(Txn transaction, TextImpl text, NodePath path) { if (config == null) { engine.storeText(text, NativeTextEngine.TOKENIZE, config, mode == REMOVE_ALL_NODES); } else if (config.match(path)) { int tokenize = config.preserveContent(path) ? NativeTextEngine.DO_NOT_TOKENIZE : NativeTextEngine.TOKENIZE; engine.storeText(text, tokenize, config, mode == REMOVE_ALL_NODES); } if (!contentStack.isEmpty()) { for (int i = 0; i < contentStack.size(); i++) { ElementContent next = (ElementContent) contentStack.get(i); next.append(text.getXMLString()); } } super.characters(transaction, text, path); }