When using ElementVisitor (or
AfterVisitor), does that make DomUtils obsolete?
package org.smooks.examples.java2xml;
import org.smooks.api.ExecutionContext;
import org.smooks.api.resource.visitor.sax.ng.AfterVisitor;
import org.smooks.support.DomUtils;
import org.w3c.dom.Element;
import javax.inject.Inject;
import javax.inject.Named;
public class EchoMessageVisitor implements AfterVisitor {
@Inject
@Named("new-element-name")
private String newElementName;
@Override
public void visitAfter(final Element element, final ExecutionContext executionContext) {
System.out.println("Rename " + element.getLocalName() + " to " + newElementName);
DomUtils.renameElement(element, newElementName, true, false);
}
}
This code now throws an exception, and I note there are no examples on v2 doc page showing DomUtils.
Exception in thread "main" org.smooks.api.SmooksException: Failed to filter source
at org.smooks.engine.delivery.sax.ng.SaxNgFilter.doFilter(SaxNgFilter.java:122)
at org.smooks.engine.delivery.sax.ng.SaxNgFilter.doFilter(SaxNgFilter.java:94)
at org.smooks.Smooks._filter(Smooks.java:547)
at org.smooks.Smooks.filterSource(Smooks.java:505)
at org.smooks.examples.java2xml.Main.runSmooksTransform(Main.java:81)
at org.smooks.examples.java2xml.Main.main(Main.java:101)
Caused by: java.lang.NullPointerException: Cannot invoke "org.w3c.dom.Node.getUserData(String)" because "node" is null
...