1

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)

ここで問題になる可能性があるのは誰でも助けることができます。

4

2 に答える 2

0

これが機能するかどうかはわかりませんが、file.xmlをres / xmlディレクトリに保存すると、XmlResourceParser次を使用してMainActivityで取得できます。

XmlResourceParser myXmlParser = getResources().getXml(R.xml.file);
于 2013-03-09T20:02:05.670 に答える
0
saxParser.parse("c:\\file.xml", handler);

これはデバイスでは機能しません...それらはC:\\ 、リソースまたはapk、ランタイムからロードするフォルダーに入れられたInseadにアクセスできません

于 2013-03-09T19:49:48.300 に答える