Сведения о вопросе

Kimsanov

16:54, 3rd August, 2020

Теги

java   xml    

Лучший метод для разбора различных пользовательских документов XML в Java

Просмотров: 414   Ответов: 6

Каков наилучший метод для разбора нескольких дискретных пользовательских документов XML с помощью Java?



  Сведения об ответе

nYU

13:15, 16th August, 2020

Я бы использовал Stax для разбора XML, это быстро и просто в использовании. Я использовал его в своем последнем проекте для разбора файлов XML размером до 24 Мб. Там есть хорошее введение на java.net, которое говорит вам все, что вам нужно знать, чтобы начать работу.


  Сведения об ответе

dumai

02:23, 3rd August, 2020

В принципе, у вас есть два основных метода парсинга XML в Java :

  • SAX, где вы используете обработчик только для того, чтобы захватить то, что вы хотите в своем XML и выбросить rest
  • DOM, который все время анализирует ваш файл и позволяет вам захватывать все элементы более древовидным способом.

Еще один очень полезный метод разбора XML, хотя и немного более поздний, чем эти, и включенный в JRE только с Java6, - это StAX . StAX был задуман как медиальный метод между древовидным подходом DOM и событийным подходом SAX. Это очень похоже на SAX в том, что парсинг очень больших документов прост, но в этом случае приложение "pulls" получает информацию от парсера, а не парсинг "pushing" событий в приложение. Вы можете найти более подробное объяснение по этому вопросу здесь .

Итак, в зависимости от того, чего вы хотите достичь, вы можете использовать один из этих подходов.


  Сведения об ответе

park

22:13, 12th August, 2020

Вы захотите использовать org.xml.sax.XMLReader ( http://docs.oracle.com/javase/7/docs/api/org/xml/sax/XMLReader.html).


  Сведения об ответе

P_S_S

19:08, 21st August, 2020

Если вам нужно только разобрать,то я бы рекомендовал использовать библиотеку XPath. Вот хорошая ссылка: http://www.ibm.com/developerworks/library/x-javaxpathapi.html

Но вы можете подумать о том, чтобы превратить XMLs в объекты, и тогда небо-это предел. Для этого вы можете использовать XStream, это отличная библиотека, которую я использую много


  Сведения об ответе

KOMP

15:58, 22nd August, 2020

Используйте библиотека dom4j

Сначала прочитайте документ

import java.net.URL;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class Foo {

    public Document parse(URL url) throws DocumentException {
        SAXReader reader = new SAXReader();
        Document document = reader.read(url);
        return document;
    }
}

Затем используйте XPATH, чтобы добраться до нужных вам значений

public void get_author(Document document) {
    Node node = document.selectSingleNode( "//AppealRequestProcessRequest/author" );
    String author = node.getText();
    return author;
}


  Сведения об ответе

SILA

23:22, 11th August, 2020

Ниже приведен код извлечения некоторого значения value с помощью vtd-xml .

import com.ximpleware.*;

public class extractValue{
    public static void  main(String s[]) throws VTDException, IOException{
        VTDGen vg = new VTDGen();
        if (!vg.parseFile("input.xml", false));
        VTDNav vn = vg.getNav();
        AutoPilot ap = new AutoPilot(vn);
        ap.selectXPath("/aa/bb[name='k1']/value");
        int i=0;
        while ((i=ap.evalXPath())!=-1){
            System.out.println(" value ===>"+vn.toString(i));
        }   
    }
}


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться