XMLデータを取得するためにAndroidでこのコードを使用しているこの奇妙な問題があります
public class MainActivity extends Activity {
private Object[] lv_arr = {};
// static String url = "C:\\Users\\Administrator\\Desktop\books.xml";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final EditText edt = (EditText)findViewById(R.id.editText1);
try {
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();
DefaultHandler handler = new DefaultHandler() {
boolean bfname = false;
boolean blname = false;
boolean bnname = false;
boolean bsalary = false;
public void startElement(String uri, String localName,String qName,
Attributes attributes) throws SAXException {
System.out.println("Start Element :" + qName);
edt.setText(qName); //Notice the text field
if (qName.equalsIgnoreCase("FIRSTNAME")) {
bfname = true;
}
if (qName.equalsIgnoreCase("LASTNAME")) {
blname = true;
}
if (qName.equalsIgnoreCase("NICKNAME")) {
bnname = true;
}
if (qName.equalsIgnoreCase("SALARY")) {
bsalary = true;
}
}
public void endElement(String uri, String localName,
String qName) throws SAXException {
System.out.println("End Element :" + qName);
}
public void characters(char ch[], int start, int length) throws SAXException {
if (bfname) {
System.out.println("First Name : " + new String(ch, start, length));
bfname = false;
}
if (blname) {
System.out.println("Last Name : " + new String(ch, start, length));
// edt.setText(new String(ch, start, length));
blname = false;
}
if (bnname) {
System.out.println("Nick Name : " + new String(ch, start, length));
bnname = false;
}
if (bsalary) {
System.out.println("Salary : " + new String(ch, start, length));
bsalary = false;
}
}
};
saxParser.parse("c:\\file.xml", handler);
} catch (Exception e) {
e.printStackTrace();
}
}
しかし、このコードは Java では問題なく動作しますが、Android では構文エラーは発生しませんが、出力が得られず、テキスト フィールドも空になります。log-cat の結果:
03-10 00:42:51.222: W/System.err(366): at javax.xml.parsers.SAXParser.parse(SAXParser.java:392)
03-10 00:42:51.232: W/System.err(366): at javax.xml.parsers.SAXParser.parse(SAXParser.java:268)
03-10 00:42:51.320: W/System.err(366): at dalvik.system.NativeStart.main(Native Method)
03-10 00:42:51.832: W/InputManagerService(59): Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@43f4ae90 (uid=10025 pid=132)
ここで問題になる可能性があるのは誰でも助けることができます。