我有一个如下所述的 xml。
<labels>
<label id="lblMS">
<text language="EN" value="Morning Sync"/>
<text language="DE" value="Morgan Sync"/>
</label>
<label id="lblES">
<text language="EN" value="Evening Sync"/>
<text language="DE" value="Sync Abend"/>
</label>
<label id="lblAS">
<text language="EN" value="Afternoon Sync"/>
<text language="DE" value="Sync Afternoon"/>
</label>
</labels>
我可以使用 xmlpull 解析器逐个节点进行解析,如下所示。
private HashMap<String, String> readCountry(XmlPullParser parser)
throws XmlPullParserException, IOException
{
parser.require(XmlPullParser.START_TAG, ns, "label");
String labelid = parser.getAttributeValue(ns, "id");
String textlan = "";
String textval="";
String capital="";
String currencyCode="";
String currency="";
while(parser.next() != XmlPullParser.END_TAG){
if(parser.getEventType() != XmlPullParser.START_TAG){
continue;
}
String name = parser.getName();
if(name.equals("text")){
textlan = parser.getAttributeValue(ns, "language");
textval = parser.getAttributeValue(ns,"value");
readCapital(parser);
}else{
skip(parser);
}
}
String details = "Language : " + textlan + "\n" +
"Value : " + textval + "\n";
HashMap<String, String> hm = new HashMap<String, String>();
hm.put("id", labelid);
hm.put("details",details);
return hm;
}
但我的要求略有不同。我想制作包含 id 作为键和所有子节点的标签。文本节点作为标签 ID 的值。
我为此付出了很多努力。你能在这方面帮助我吗?谢谢
最佳答案
试试这个解决方案-
将 Hashmap 添加到 ArrayList。因此,您将获得格式为“键”:“值”类型的 HashMap 列表。
private HashMap<String, String> readCountry(XmlPullParser parser)
throws XmlPullParserException, IOException
{
parser.require(XmlPullParser.START_TAG, ns, "label");
String labelid = parser.getAttributeValue(ns, "id");
String textlan = "";
String textval="";
String capital="";
String currencyCode="";
String currency="";
HashMap<String, String> hm = new HashMap<String, String>();
ArrayList<HashMap> al=new ArrayList<HashMap>();
while(parser.next() != XmlPullParser.END_TAG){
if(parser.getEventType() != XmlPullParser.START_TAG){
continue;
}
String name = parser.getName();
if(name.equals("text")){
textlan = parser.getAttributeValue(ns, "language");
textval = parser.getAttributeValue(ns,"value");
readCapital(parser);
String details = "Language : " + textlan + "\n" +
"Value : " + textval + "\n";
hm.put(labelid, details);
al.add(hm);
}else{
skip(parser);
}
}
someArray = compareXMLValues(timeSessionId,al);
//return al;
return someArray;
}
compareXMLValues(timeSessionId,al)
{
parse full XML of syncgroupsettings;
And compare if (timeSessionId == parser.getAttributeValue(ns, "labelid"))
{
if it is true-
read from while loop, syncgroupname and store in Array list of Strings.
}
else
{
continue;
}
}
希望对您有所帮助。
关于android - 如何在android中解析下面的xml?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32720211/