So I am trying to get the text between the tags. So far I have been successful. But sometimes when there are special characters or html tags inside my custom tags I am unable to
I'm not familiar with Groovy so here is a solution in Java. I believe the translation is straighforward.
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import org.xml.sax.Attributes;
import org.xml.sax.helpers.DefaultHandler;
public class SaxHandler extends DefaultHandler {
ArrayList DefinedTermTitles = new ArrayList<>();
ArrayList ClauseTitles = new ArrayList<>();
String currentMessage;
boolean countryFlag = false;
StringBuilder message = new StringBuilder();
public void startElement(String ns, String localName, String qName, Attributes atts) {
switch (qName) {
case "ae_clauseTitleBegin":
countryFlag = true;
break;
case "ae_definedTermTitleBegin":
countryFlag = true;
break;
}
}
public void characters(char[] chars, int offset, int length) {
if (countryFlag) {
message.append(new String(chars, offset, length));
}
}
public void endElement(String ns, String localName, String qName) {
switch (qName) {
case "ae_clauseTitleEnd":
ClauseTitles.add(message.toString());
countryFlag = false;
message.setLength(0);
break;
case "ae_definedTermTitleEnd":
DefinedTermTitles.add(message.toString());
countryFlag = false;
message.setLength(0);
break;
}
}
public static void main (String argv []) {
SAXParserFactory factory = SAXParserFactory.newInstance();
try {
String path = "INPUT_PATH_HERE";
InputStream xmlInput = new FileInputStream(path + "test.xml");
SAXParser saxParser = factory.newSAXParser();
SaxHandler handler = new SaxHandler();
saxParser.parse(xmlInput, handler);
System.out.println(handler.DefinedTermTitles);
System.out.println(handler.ClauseTitles);
} catch (Exception err) {
err.printStackTrace ();
}
}
}
Output
[Australia, Isle of Man, France]
[1.02 Accounting Terms., Smallest Street-Legal Car at 99cm wide and 59 kg in weight, Most Valuable Car at $15 million]