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

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

22.08.2008 18:22:39
Покажите нам, как далеко вы продвинулись - мы не собираемся писать это для вас. Вы хотите сделать это с DOM, SAX или другим? Что вы пробовали до сих пор? Какие учебники / документацию вы посмотрели?
mdm 14.03.2011 13:19:47
Используйте java dom api или sax для разбора xml. Дайте более конкретную структуру XML.
0xAX 14.03.2011 13:20:02
Попробуйте картирование касторов .
nIKUNJ 14.03.2011 13:20:09
Что ты на сегодня сделал? У вас есть код, чтобы показать нам?
Nishan 14.03.2011 13:20:28
если бы дело было в эффективности, я бы использовал SAX или по личным предпочтениям - StAX
Yaneeve 14.03.2011 13:21:04
6 ОТВЕТОВ
РЕШЕНИЕ

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

5
22.08.2008 19:45:47

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

3
26.11.2013 05:00:10

По сути, у вас есть два основных метода синтаксического анализа XML в Java:

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

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

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

4
7.12.2010 13:58:11
скопировано из моего ответа на дублирующую ветку, чтобы предоставить больше информации о различных методах
Valentin Rocher 7.12.2010 13:58:16

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

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

2
14.03.2011 13:22:09

Используйте библиотеку 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;
}
2
14.03.2011 13:34:42

Ниже приведен код извлечения некоторого значения с использованием 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));
        }   
    }
}
0
23.03.2016 23:11:35