Wczytywanie pliku XML z adresuURL

Wczytywanie pliku XML z adresuURL
PP
  • Rejestracja:około 11 lat
  • Ostatnio:około 9 lat
  • Postów:40
0

Witam
Chcę wczytać plik XML z adresu URL. Przy kompilacji wywala błąd. Co robię źle? Proszę o wyrozumiałość, jestem początkujący :).

Exception in thread "main" java.lang.NullPointerException

Kod odpowiedzialny za wczytywanie pliku:

Kopiuj
factory = DocumentBuilderFactory.newInstance();
	builder = factory.newDocumentBuilder();
		for(int i=1; i<=3; i++)
		{		
			
			strona = "http://nbp.pl/kursy/xml/Last" + mapa.get(i) + ".xml";
			
			Document doc = builder.parse(new URL(strona).openStream());
			System.out.println(doc);
			new WczytywanieDanych(doc);
		}

Jeśli coś jest głupie, ale działa, to nie jest głupie.
edytowany 1x, ostatnio: PrzepychaczPL
bogdans
Chyba pierwszy w dziejach przypadek, że podczas kompilacji pojawia się NPE.
PP
Czuję się wyróżniony :). A wiesz jak rozwiązać ten problem?
bogdans
Nie podałeś podstawowej informacji, w którym wierszu jest NPE.
PP
Klasa z NPE w ostatnim poście :)
hcubyc
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 3 lata
0

Na której linii / liniach masz NPE? Czy i-ty element mapy nie jest nullem? Czy adres strony jest prawidłowy?


Limitations are limitless > ##### Ola Nordmann napisał(a)
> Moim językiem ojczystym jest C++ i proszę uszanować to, że piszę po polsku.
PP
  • Rejestracja:około 11 lat
  • Ostatnio:około 9 lat
  • Postów:40
0

Strona nie jest nullem. Jak dam komende println to normalnie wypisuje działający adres strony. NPE mam w innej klasie wykorzystującej ten XML, ale kiedy używam komendy println jak w kodzie wyzej to wypisuje referencje:
[#document: null]

Klasa, w której jest NPE

Kopiuj
public class WczytywanieDanych 
{
	.	//deklaracje zmiennych
	.
	.
	public WczytywanieDanych(Document doc) 
	{
		docXML = doc;
		Element element_tabelaKursow = docXML.getDocumentElement();
		System.out.println(docXML.toString());
		System.out.println(element_tabelaKursow.toString());

		
		sprawdzanieIlosciElementow_pozycja();
	}
	
	private static void sprawdzanieIlosciElementow_pozycja()
	{
		//sprawdzanie <pozycja>
		NodeList elementy_pozycja = element_tabelaKursow.getChildNodes(); //tu jest NPE
		for(int a = 0; a < elementy_pozycja.getLength(); a++)
		{
			element_pozycja = elementy_pozycja.item(a);
		
			if(element_pozycja instanceof Element)
			{
				wczytywanieElementu_pozycja(element_pozycja);
			}
		}

	}
	.
	. //inne metody
	.
}

odswiezam


Jeśli coś jest głupie, ale działa, to nie jest głupie.
edytowany 3x, ostatnio: PrzepychaczPL
Shalom
!Kolejny taki post "odświeżam" skończy się banem...
bogdans
Moderator
  • Rejestracja:prawie 17 lat
  • Ostatnio:prawie 5 lat
0

Zdradź co się kryje w zmiennej mapa (chociaż jeden element, np. mapa.get(0)).


To smutne, że głupcy są tak pewni siebie, a ludzie mądrzy - tak pełni wątpliwości. Bertrand Russell
edytowany 1x, ostatnio: bogdans
PP
  • Rejestracja:około 11 lat
  • Ostatnio:około 9 lat
  • Postów:40
0
Kopiuj
	static Map<Integer, Character> mapa = new HashMap<Integer, Character>();
	mapa.put(1, 'A');
	mapa.put(2, 'B');
	mapa.put(3, 'C');

Mapa zawiera litery A, B, C potrzebne do stworzenia 3 linkow, poniewaz wszystkie waluty zapisane sa w trzech plikach xml.


Jeśli coś jest głupie, ale działa, to nie jest głupie.
__krzysiek85
  • Rejestracja:ponad 18 lat
  • Ostatnio:ponad 9 lat
  • Postów:1019
2

"Element element_tabelaKursow" masz zadeklarowane zarówno, w klasie WczytywanieDanych, jak i w konstruktorze w tej klasie.


Registered Linux user #456405 | SCJP 6 | SCWCD 5 | SCBCD 5
bogdans
Dałem Ci plusa, ale miałeś trochę ułatwione zadanie. W pierwotnej wersji kodu, miejsce gdzie jest NPE, nie było zaznaczone.
PP
Dzięki, jesteś wielki. Nawet nie spodziewałem się, że zrobiłem tak głupi błąd :D.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.