簡體   English   中英

如何在java中的android studio中使用xml格式字符串解析數據

[英]how to xml format string parsing data in android studio in java

我正在嘗試使用此代碼

String DeviceInfo= 
"<?xml version="1.0" encoding="UTF-8" standalone="yes"?><DeviceInfo dc="" dpId="" mc="" mi="" rdsId="" rdsVer=""/>"
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)
    { super.onActivityResult(requestCode, resultCode, data); if (resultCode ==
            RESULT_OK) {
        Bundle b = data.getExtras();
        if (b != null) {
            String deviceInfo = b.getString("DEVICE_INFO", "");
            String pidData = b.getString("PID_DATA");

            String dnc = b.getString("DNC", "");

            String dnr = b.getString("DNR", "");

            // String deviceinfo = bundle.getString("DEVICE_INFO");
            Log.d("device ",""+deviceInfo);
            String rdServiceInfo = b.getString("RD_SERVICE_INFO", "");


        /*  *//*  if
            (!dnc.isEmpty() || !dnr.isEmpty())
            { showLogInfoDialog("Device Info", dnc + dnr + " " +
                    deviceInfo + rdServiceInfo);
            }
          {
                //showLogInfoDialog("Device Info","" +deviceInfo );
            }*//*
            try {
                DocumentBuilderFactory dbf =
                        DocumentBuilderFactory.newInstance();
                DocumentBuilder db = dbf.newDocumentBuilder();
                InputSource is = new InputSource();
                is.setCharacterStream(new StringReader(deviceInfo));

                Document doc = db.parse(is);
                NodeList nodes = doc.getElementsByTagName("employee");

                // iterate the employees
                for (int i = 0; i < nodes.getLength(); i++) {
                    Element element = (Element) nodes.item(i);

                    NodeList name = element.getElementsByTagName("value");
                    Element line = (Element) name.item(0);
                    System.out.println("value: " + getCharacterDataFromElement(line));

                    NodeList title = element.getElementsByTagName("title");
                    line = (Element) title.item(0);
                    System.out.println("Title: " + getCharacterDataFromElement(line));
                }
            }
            catch (Exception e) {
                e.printStackTrace();
            }*/







             text1.setText(pidData);
            text.setText(deviceInfo);

        } } }

在這個 xml 格式字符串中

我從您的問題中了解到的是您需要知道如何解析 String xml 數據。 然后將值映射到相應的字段。 下面是示例方法,它將從字符串中解析 xml 並一一給出元素。

/**
 * 
 * @param inputXmlS is String xml Data 
 */
public void xmlParser(String inputXmlS){
    try {
        XmlPullParserFactory xmlFactory = XmlPullParserFactory.newInstance();
        xmlFactory.setNamespaceAware(true);
        XmlPullParser xmlPullParser = xmlFactory.newPullParser();
        xmlPullParser.setInput(new StringReader(inputXmlS));
        int event = xmlPullParser.getEventType();
        while (event != XmlPullParser.END_DOCUMENT) {
            if(event == XmlPullParser.START_DOCUMENT) {
                Log.d(TAG,"Start document");
            } else if(event == XmlPullParser.START_TAG) {
                Log.d(TAG,"Start tag "+xmlPullParser.getName());
            } else if(event == XmlPullParser.END_TAG) {
                Log.d(TAG,"End tag "+xmlPullParser.getName());
            } else if(event == XmlPullParser.TEXT) {
                Log.d(TAG,"Text "+xmlPullParser.getText());
            }
            event = xmlPullParser.next();
        }
        Log.d(TAG,"End document");

    } catch (XmlPullParserException | IOException e) {
        e.printStackTrace();
    }
}

所以現在你可以像下面這樣調用這個方法

String deviceInfo= "<?xml version="1.0" encoding="UTF-8" standalone="yes"?><DeviceInfo dc="" dpId="" mc="" mi="" rdsId="" rdsVer=""/>";
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{ super.onActivityResult(requestCode, resultCode, data); if (resultCode ==
        RESULT_OK) {
 xmlParser(deviceInfo);
 }
}

而已。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM