java - update text in HTML page using parser -
i gets error in middlebitparent.replacewith(nodespan);
in following code written in jsoup navigate html doc , change background color of word "in"
elements divs= doc.select("div"); for(element div : divs) { if (div.hastext()) { int pos = div.text().indexof("in"); out.println(pos); if (pos >= 0) { element span = doc.createelement("span"); span.attr("style", "background-color: yellow"); textnode text = new textnode(div.text(),""); // string[] words = div.split("\\s", 4); textnode middlebit = text.splittext(4); textnode endbit=text.splittext("in".length()); node middleclone = middlebit.clone(); span.appendchild(middleclone); node nodespan=span.clone(); node middlebitparent = middlebit.parent(); middlebitparent.replacewith(nodespan);
the error says
java.lang.nullpointerexception org.apache.jsp.page1_jsp._jspservice(page1_jsp.java:177) org.apache.jasper.runtime.httpjspbase.service(httpjspbase.java:70) javax.servlet.http.httpservlet.service(httpservlet.java:717) org.apache.jasper.servlet.jspservletwrapper.service(jspservletwrapper.java:374) org.apache.jasper.servlet.jspservlet.servicejspfile(jspservlet.java:342) org.apache.jasper.servlet.jspservlet.service(jspservlet.java:267) javax.servlet.http.httpservlet.service(httpservlet.java:717)
update:
is there parser can update text in text node in easy way
public static void main(string[] arg){ htmlcleaner cleaner = new htmlcleaner(); try { tagnode nodes = cleaner.clean(new file("c:/test.xml")); object[] objects = nodes.evaluatexpath("//div/a[text(.,'in')]"); system.out.println(((tagnode)objects[0]).gettext()); } catch (exception e) { e.printstacktrace(); } }
you can try htmlcleaner support xpath more useful in case. jsoup's css selector cannot filter text node.
Comments
Post a Comment