2008-08-22 3 views
7

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

+1

Покажите нам, как далеко у вас есть - мы не собираемся писать это для вас. Вы хотите сделать это с помощью DOM, SAX или другого? Что вы пробовали до сих пор? В каких учебниках/документах вы посмотрели? – mdm

+0

Используйте java dom api или sax для разбора xml. Дайте более конкретную структуру xml. – 0xAX

+0

Попробуйте сопоставить [castor] (http://www.castor.org/xml-mapping.html). – nIKUNJ

ответ

5

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

4

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

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

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

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

+0

скопирован из моего ответа на дублирующую тему, чтобы предоставить больше информации о различных методах –

2

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

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

2

Используйте 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; 
} 
0

Ниже приведен код извлечения значения с использованием 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)); 
     } 
    } 
} 
Смежные вопросы