Suppose we have an XML file that has been written there .... how to extract information from it, for example, only 3 or 4 levels of hierarchy?

    1 answer 1

    Here's an example:

    xml:

    <?xml version="1.0" encoding="utf-8"?> <library> <section>Художественная литература <book> <title>Жизнь взаймы</title> <author>Эрих Мария Ремарк</author> <shot_content>Мужчина, его автомобиль, хрупкая девушка, умирающая от туберкулеза.</shot_content>> </book> </section> </library> 

    java:

     public class ParserSAX { public static void main(String args[]) { try { //Создается фабрика строителей SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); //Создается конкретный строитель SAXParser saxParser = saxParserFactory.newSAXParser(); File xmlFile = new File("D:\\library.xml"); DefaultHandler defaultHandler = new DefaultHandler() { boolean bTitle = false; boolean bAuthor = false; boolean bContent = false; //Функция при вызове начального тега //uri - пространство имен //local name - локальное имя элемента //qname - это(local name: uri) public void startElement (String uri, String localName, String qName, Attributes atributess) throws SAXException { if(qName.equalsIgnoreCase("TITLE")){ bTitle = true; } if(qName.equalsIgnoreCase("AUTHOR")){ bAuthor = true; } if(qName.equalsIgnoreCase("SHOT_CONTENT")){ bContent = true; } } public void endElement(String uri, String localName, String qName) throws SAXException{ } //Вызывается когда встретился текст public void characters(char ch[], int start, int length) throws SAXException{ if(bTitle){ System.out.println("-----------------------------------------------------------"); System.out.println("Название книги: " + new String(ch, start, length)); bTitle = false; } if(bAuthor){ System.out.println("Aвтор книги: " + new String(ch, start, length)); bAuthor = false; } if(bContent){ System.out.println("Cодержание книги: " + new String(ch, start, length)); System.out.println("-----------------------------------------------------------"); bContent = false; } } }; saxParser.parse(xmlFile,defaultHandler); } catch (Exception ex) { ex.printStackTrace(); } return; } } 
    • and if we do not know the name of the elements? - user229233
    • one
      then it’s harder, SAX event parser, event: detecting the start tag and the end tag, then for each event of the start tag you save the contents of the tag somewhere. - bsuart