XML w Javie

0

Witam,

chciałbym się Was zapytać, czy moglibyście mi wyŧłumaczyć zasadę działania "org.w3c.dom.*" bo nie rozumiem w ogóle o co tu chodzi; chciałbym po prostu rozumieć, dlaczego node nie działają mi jak mają działać, tak samo jak elementy i te inne bajery.

Dzięki za pomoc

publi static void main(String arg[])
                  try {
			/*

				Tworzenie pliku z którego będziemy czytać :)

			*/

			File file = new File("test.xml");

			/*

				To jest coś, które coś robi

			*/

			DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
			DocumentBuilder db = dbf.newDocumentBuilder();
			Document doc = db.parse(file);


			/*

				By znormalizować tekst

			*/

			doc.getDocumentElement().normalize();

			/*

		
					AAAAAAAAAAAAAAAAAAAAAAAAAAAAAGH


			*/

			Node p = doc.getDocumentElement();	

//////////////////	consoleLine(p.getNodeName()); < tu by mi wypiało ładnie nazwę noda

			p = p.getFirstChild();


			consoleLine(p.getNodeName());

///////////////////^ czemu to wypisuje #text zamiast normalnej nazwy noda??

		} catch(Exception e) { System.out.print("\n\nBłąd panie!\n"+e+"\n"); }
	} 
0

czemu to wypisuje #text zamiast normalnej nazwy noda??

Powiedzmy, że masz taki xml:

<?xml version="1.0" encoding="UTF-8"?> <notepadplus> <scintillacontextmenu>tu jest teks</scintillacontextmenu> </notepadplus>

doc.getDocumentElement().getNodeName(); wypisze NotepadPlus
Teraz jak weźmiesz firstChild, to będzie #text. Rozumiem, że spodziewałeś się napisu "Scintilla... coś tam". To dlatego, że zakładasz, że węzeł NotepadPlus ma tylko jedno dziecko. W rzeczywistości ma 3:
-tekst pomiędzy końcem taga: znak nowej linii i wcięcie;
-węzeł <ScintillaContextMenu>
-tekst po </ScintillaContextMenu>: znak nowej linii.
Dlatego wypisuje ci się #text, który jest nazwą węzła tekstowego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1