[Java lista] xml(?) feldolgozás
Rákos Attila
tenegri at tengerstudio.com
2008. Okt. 26., V, 13:03:53 CET
Az első evaluate() végigment a streamen és lezárta, így a második már
nem tud olvasni belőle. De én továbbra is azt mondanám, hogy ehhez DOM
a legmegfelelőbb. Pl. vhogy így:
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;
import org.xml.sax.InputSource;
...
String s = "<VALAMI_XML RESP='10' RESP2='20' />";
InputSource source = new InputSource(new StringReader(s));
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder docb = dbf.newDocumentBuilder();
Document doc = docb.parse(source);
Element root = doc.getDocumentElement();
System.out.println("Egy attribútum:");
System.out.println("RESP2: " + root.getAttribute("RESP2"));
System.out.println("Az összes attribútum:");
NamedNodeMap map = root.getAttributes();
for (int i = 0; i < map.getLength(); i++) {
Node attr = map.item(i);
System.out.println(attr.getNodeName() + ": " + attr.getNodeValue());
}
System.out.println("Még egy külön attribútum másként:");
System.out.println("RESP: " + map.getNamedItem("RESP").getNodeValue());
De ehhez csak egy kicsit olvasni kell.
A
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
From: András Csányi <sayusi.ando at gmail.com>
To: javalist at javagrund.hu <javalist at javagrund.hu>
Date: Sunday, October 26, 2008, 12:05:06 PM
Subject: [Java lista] xml(?) feldolgozás
--====----====----====----====----====----====----====----====----====----===--
2008/10/26 Rákos Attila <tenegri at tengerstudio.com>:
>
> Egy ilyen egyszerű szerkezetű XML-nél inkább SAX vagy még inkább DOM
> alapon állnék neki, mint XPath-tal. A mikéntre szerintem tökéletesen
> elég lesz a Google legelső találata (még ha kicsit régi is):
>
> http://www.google.hu/search?hl=hu&q=java+xml&btnG=Keres%C3%A9s&meta=
Találkoztam ezzel az oldallal. Sőt olvastam is párszor :$
A problémám, hogy nem tudtam benne eligazodni. Van egy rakat
lehetőség, hogy mit használhatok és tényleg nem tudom mi az a mi jó
lenne.
Másodsorban van ez az átkozott xml amit használnak, hogy 1 node -ban
van minden és onnan kell kibányászni. Ettől is már kezdek kiakadni.
Odáig eljutottam, hogy XPath -al ki tudom bányászni az értéket. De ha
több értéket akarok kiszedni, akkor
"org.xml.sax.SAXParseException: Premature end of file." hibaüzenettel
örvendeztet meg.
A kód meg ez:
InputStream in = conn.getInputStream();
InputSource source = new InputSource(in);
XPathFactory factory = XPathFactory.newInstance();
XPath xPath = factory.newXPath();
String specXml = xPath.evaluate("/VALAMI_XML/@RESP", source);
String specXml2 = xPath.evaluate("/VALAMI_XML/@RESP2", source);
in.close();
A hibaüzenet a String specXml2 sorra hivatkozik.
A kapott xml meg így néz ki:
<VALAMI_XML RESP='10' RESP2='20' />
--
- -
-- Csanyi Andras -- http://sayusi.hu -- Sayusi Ando
-- "Bízzál Istenben és tartsd szárazon a puskaport!".-- Cromwell
_______________________________________________
Javalist mailing list
Javalist at javagrund.hu
http://javagrund.hu/mailman/listinfo/javalist
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
További információk a(z) Javalist levelezőlistáról