如何在 Java 的 Android Studio 中对字符串解析数据进行 XML 格式化

how to xml format string parsing data in android studio in java

提问人:Suraj D 提问时间:6/24/2022 最后编辑:Ratilal ChopdaSuraj D 更新时间:7/9/2022 访问量:200

问:

我正在尝试此代码

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 格式字符串中

java android-studio android-layout xml 解析

评论

0赞 Community 7/2/2022
请澄清您的具体问题或提供其他详细信息,以准确说明您的需求。正如目前所写的那样,很难确切地说出你在问什么。

答:

0赞 Hemanth Kumar 7/9/2022 #1

我从您的问题中了解到的是,您需要知道如何解析 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);
 }
}

就是这样。