【问题标题】:XML Not Showing In AndroidXML 未在 Android 中显示
【发布时间】:2013-02-25 05:50:54
【问题描述】:

有一个奇怪的问题,我在 android 中使用这段代码来获取 XML 数据

  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 中没有语法错误,但我没有输出,而且文本字段为空,这里有什么问题 我的日志猫结果:

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)

这可能是什么问题,谁能帮忙。

【问题讨论】:

    标签: java android eclipse oop netbeans


    【解决方案1】:

    不确定这是否适合您,但如果您将 file.xml 保存在 res/xml 目录中,您可以使用以下方法在 MainActivity 中获得 XmlResourceParser

    XmlResourceParser myXmlParser = getResources().getXml(R.xml.file);
    

    【讨论】:

      【解决方案2】:
      saxParser.parse("c:\\file.xml", handler);
      

      这不适用于设备...那些无法访问您的C:\\ 将其放入资源或文件夹中,您将从 apk 加载它,运行时

      【讨论】:

      • 那么我如何从资源文件夹中获取它
      猜你喜欢
      • 1970-01-01
      • 2019-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-27
      相关资源
      最近更新 更多