提问人:Suraj D 提问时间:6/24/2022 最后编辑:Ratilal ChopdaSuraj D 更新时间:7/9/2022 访问量:200
如何在 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 格式字符串中
答:
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);
}
}
就是这样。
评论