Каждый год в корпусе содержит XML-файлы размером в сотни мегабайт, в которых есть XML-файл для каждой статьи за этот год.
Я хочу получить текст из тега body.content.
Общий формат XML-файла для определенного года это что-то вроде:
Код: Выделить всё
Article1
...
Article2
...
Код: Выделить всё
import org.w3c.dom.Document;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpression;
import javax.xml.xpath.XPathFactory;
import java.io.FileWriter;
import java.util.ArrayList;
public class XMLParser {
public static XMLParser parser = new XMLParser();
public static final String TEXT_LOCATION = "/txts/";
private XMLParser(){
}
public static XMLParser getParser(){
return parser;
}
public void XMLtoText(String xmlLocation, int year) throws Exception{
ArrayList text = new ArrayList();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(xmlLocation);
XPathFactory xFactory = XPathFactory.newInstance();
XPath xpath = xFactory.newXPath();
XPathExpression expr = xpath.compile("//body.content/text()");
Object result = expr.evaluate(doc, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
for (int i=0; i
Подробнее здесь: [url]https://stackoverflow.com/questions/43622200/how-to-handle-nested-xml-files-in-java[/url]