私は Android 開発に不慣れで、XML を解析して Google MapView にバインドしたいと考えています。ただし、要素間のテキストを読み取ることはできません。
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>
コード:
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());
}
では、getNodeValue() の何が問題なのか???
もう 1 つの質問です。Eclipse を Visual Studio のように設定するにはどうすればよいですか。エラーが発生した場合、デバッグ ウィンドウにスタック メッセージを出力するだけでなく、ソース行ファイルの行に分割されます。
更新 1. 次の投稿を見つけました: Android バージョン 2.2 未満の org.w3c.dom.Node Android バージョン2.2 未満の org.w3c.dom.Node
node.getTextContext() は、node.getFirstChild().getNodeValue() と同じです。
ただし、これを試してみると、エラーも発生します。