2010-02-25 20 views
8

Nie trzeba czytać złożonych plików XML. Chcę tylko przeczytać następujący plik konfiguracyjny z najprostszym czytnikiem XML.Jak odczytać plik XML za pomocą Java?

http://i45.tinypic.com/2eamoeg.jpg

+1

Ponieważ są to pary nazwa wartość, to dlaczego nie wystarczy zdefiniować to jako pliki .properties? W ten sposób nie musisz go w ogóle analizować. – Adamski

+1

możliwe duplikat [Co to jest najlepszy/Najprostszym sposobem, aby przeczytać w pliku XML w aplikacji Java?] (Http://stackoverflow.com/questions/428073/what-is-the-best-simplest-way-to- read-in-a-pliku XML-in-java-aplikacji) – ripper234

Odpowiedz

8

Ponieważ chcesz przetworzyć pliki konfiguracyjne, myślę commons-configuration byłoby najlepszym rozwiązaniem.

Commons konfiguracja zapewnia ogólny interfejs konfiguracyjny, który umożliwia aplikacji Java do odczytu danych konfiguracyjnych z różnych źródeł (w tym XML)

+0

próbowałem Commons cofiguration i jeszcze jeden błąd kompilatora, jak przedstawiono powyżej w migawce ... migawka może być zbyt jasne, ze względu na zmniejszenie rozmiarów, dzięki czemu można uzyskać dostęp do migawka na http://i45.tinypic.com/2eamoeg.jpg ............. LUB ..... po prostu przeciągnij i upuść zdjęcie do paska adresu przeglądarki (jeśli jesteś używając firefox) –

+0

Yatendra Goel musisz pobrać apache commons-lang. I kilka innych, jak również fotografia - patrz tutaj http://commons.apache.org/configuration/dependencies.html – Bozho

+0

napisałem następujące oświadczenie, ale to nie działa ..... host = config.getString ("DB-hosta "); ...................... Czy jest jakiś błąd w tym oświadczeniu ... –

2

Istnieje kilka parser XML dla Javy. Jeden z nich, który został użyty i szczególnie przyjazny dla programistów, to JDOM. I przez programistę przyjazny, mam na myśli "zorientowany Java" (tj., Pracujesz z obiektami w twoim programie), zamiast "zorientowany na dokument", jak niektóre inne narzędzia.

5

Możesz użyć prostego parsera DOM do odczytania reprezentacji xml.

DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 

DocumentBuilder db = dbf.newDocumentBuilder(); 
dom = db.parse("config.xml"); 
+0

Klasy te wydają się być w JDK. Brak zewnętrznych zależności. –

9

Lubię JDOM:

SAXBuilder parser = new SAXBuilder(); 
Document docConfig = parser.build("config.xml"); 
Element elConfig = docConfig.getRootElement(); 
String host = elConfig.getChildText("host"); 
0

dla podobnego przypadku użycia w mojej aplikacji użyłem JAXB. Dzięki Jaxb czytanie plików XML przypomina interakcję z Java POJO. Ale aby użyć JAXB, musisz mieć xsd dla tego pliku xml. Możesz poszukać więcej informacji here

2

Polecam Commons Digester, który pozwala analizować plik bez pisania rozrzutów kodu. Używa szeregu reguł, aby określić, jakie działanie należy wykonać, napotykając dany element lub atrybut (typową regułą może być utworzenie określonego obiektu biznesowego).

0

Jeśli chcesz mieć możliwość odczytu i zapisu obiektów do XML bezpośrednio, można użyć XStream

4

Jeśli wystarczy proste rozwiązanie, które jest dostarczane wraz z Java SDK (od 5.0), sprawdź pakiet XPath . Jestem pewien, że inni grają lepiej, ale to było wszystko, czego potrzebowałem. Oto przykład:

import javax.xml.xpath.XPath; 
import javax.xml.xpath.XPathConstants; 
import javax.xml.xpath.XPathExpressionException; 
import javax.xml.xpath.XPathFactory; 
import org.xml.sax.InputSource; 

... 

try { 
    XPath xpath = XPathFactory.newInstance().newXPath(); 
    InputSource inputSource = new InputSource("strings.xml"); 

    // result will equal "Save My Changes" (see XML below) 
    String result = xpath.evaluate("//string", inputSource); 
} 
catch(XPathExpressionException e) { 
    // do something 
} 

strings.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <string name="saveLabel">Save My Changes</string> 
</resources> 
0

Chociaż nie próbowałem XPath jeszcze jak to po prostu przyjść do mojej uwagi teraz, próbowałem kilka rozwiązań i nie znalazłem wszystko, co działa w tym scenariuszu.

Postanowiłem stworzyć bibliotekę, która spełnia tę potrzebę, o ile pracujesz zgodnie z założeniami wymienionymi w readme. Ma tę zaletę, że używa SAX do analizowania całego pliku i zwracania go do użytkownika w postaci mapy, dzięki czemu można wyszukiwać wartości jako klucz -> wartość.

https://github.com/daaso-consultancy/ConciseXMLParser

Jeśli czegoś brakuje uprzejmie informuje mnie o brakującego elementu jak tylko ją rozwijać w oparciu o potrzeby innych i siebie.

+0

Odpowiadasz na duplikat. Proszę rozważyć odpowiadanie na wątek początkowy. – yacc

+0

@yacc dzięki za komentarz. Jednak spojrzałem na zgłoszony [potencjalny duplikat] (https://stackoverflow.com/questions/428073/what-is-the-best-simplest-way-to-read-in-an-xml-file-in-java -aplikacja) i nie było obiektywne, jak zostało określone ("najlepsze/najprostsze" rozwiązanie). Jeśli jest jeszcze jeden wpis, który przegapiłem, podaj link, by sprawdzić. Jednak w tym pytaniu podano przykład XML, a osoba przesłuchująca wyraźnie wspomina, że ​​chce rozwiązania wymagającego niewielu linii kodu. Oto dlaczego odpowiedziałem na to. –

Powiązane problemy