Wie kann ich element, text-Knoten in Java?
Ich bin neu auf Android-Entwicklung,und möchten Parsen der XML-und eine Bindung mit Google MapView.
Allerdings kann ich den Text Lesen zwischen-element.
XML -
<?xml version="1.0" encoding="utf8"?>
<table name="clinicaddress">
<row>
<GeoPoint>22.3852860,113.9664120</GeoPoint>
</row>
<row>
<GeoPoint>22.336950,114.1578720</GeoPoint>
</row>
</table>
Code:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.CharacterData;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
try {
inputStream = assetManager.open("clinics.xml");
String xmlRecords = readTextFile(inputStream);
//Log.e("Clinics XML", xmlRecords);
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xmlRecords));
DocumentBuilderFactory docBuilderFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docBuilderFactory.newDocumentBuilder();
Document doc = docBuilder.parse(is);
doc.getDocumentElement ().normalize ();
NodeList listOfClinics = doc.getElementsByTagName("row");
Log.e("listOfClinics Length" , String.valueOf(listOfClinics.getLength()));
//Loop the XML
for (int x = 0; x < listOfClinics.getLength(); x++) {
Node ClinicNode = listOfClinics.item(x);
NodeList ClinicInfo = ClinicNode.getChildNodes();
for (int y = 0; y < ClinicInfo.getLength(); y++) {
Node info = ClinicInfo.item(y);
Log.e(info.getNodeName() , info.getNodeValue()); //<--Error on info.getNodeValue()
}
}
//End Loop XML
} catch (Exception e) {
Log.e("tag", e.getMessage());
}
So, was falsch mit getNodeValue()???
Und noch eine Frage, wie kann ich den Eclipse wie Visual Studio,
Wenn ein Fehler, es wird brechen, um die Linie auf Quelltext-Datei, statt nur drucken Sie die stack-message debug-Fenster.
AKTUALISIERT 1.
Ich fand diesen Beitrag:
org.w3c.dom.Knoten mit Android-version kleiner als 2.2
org.w3c.dom.Knoten mit Android-version kleiner als 2.2
Knoten.getTextContext() ist das gleiche wie
Knoten.getFirstChild().getNodeValue().
Jedoch versuche ich dies, es geht Fehler zu.
Ich Suche in SOF, sagte jemand setzen "Throwable" und überprüft gefangen und nicht erfasste, aber das Ergebnis noch nicht erwarten wie Visualstudio..
Sie könnte vielleicht die post dies als eine separate Frage, die mit einem Testfall und dem erwarteten Ergebnis. AFAIK Eclipse brechen sollten auf jeden checked/unchecked exception, wenn Sie catch Throwable.
InformationsquelleAutor Cheung | 2012-07-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Endlich, bekomme ich dies funktioniert.
Benutze ich
info.getFirstChild().getNodeValue()
Linie 3 ist wichtig, ich Log die hasChildNodes() und sehen im LogCat, weiß nicht, warum er enthält einen Knoten mit dem Namen "#text" und keine childnodes (was falsch ist auf logcat).
Aber ich glaube, dass meine XML ist das richtige format.
Nach Google, fand viele Erklärungen.
https://www.google.com/search?q=xml+%23text
InformationsquelleAutor Cheung
Verwenden Sie die getTextContent () - Methode.
Den getTextContent () - Methode gibt den text all der verschachtelten tags.
Was jar ist der Knoten Implementierung in? Mein JDK-1.6 hat die Methode auf implementors von Knoten.
es probabbly hängt davon ab, eine version, die ich benutze 1.7 java aber die Methode getTextContent ist nicht mehr verfügbar
InformationsquelleAutor Chris Gerken
Text sind nur die Kinder des Knotens.
müssen Sie eine Schleife über alle Kinder des GeoPoint Knoten, überprüfen Sie die Knoten-Typ Knoten.TEXT_NODE-und verketten Sie die Texte
InformationsquelleAutor Gertjan Assies