2013-07-16 37 views
0

我想使用XmlPullParser獲取數組中鍵reset_periods的值。使用XmlPullParser解析xml文件以獲取字符串數組中的值

我的XML文件:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
    "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
<key>main_reset</key> 
    <integer>32</integer> 

<key>mandatory_period</key> 
    <integer>111</integer> 
    <key>reset_periods</key> 
    <array> 
     <string>2044-01-01 01:00:00</string> 
     <string>2044-01-01 05:00:00</string> 
    </array> 
    </dict> 
</plist> 

我試着像這樣:

int eventType = xpp.getEventType(); 
int i = 0; 

while (eventType != XmlPullParser.END_DOCUMENT) { 
    if (eventType == XmlPullParser.START_DOCUMENT) { 

    } else if (eventType == XmlPullParser.END_DOCUMENT) { 

    } else if (eventType == XmlPullParser.START_TAG) { 
     xmldoc += "<" + xpp.getName() + ">"; 

    } else if (eventType == XmlPullParser.END_TAG) { 
     xmldoc += "</" + xpp.getName() + ">"; 

    } else if (eventType == XmlPullParser.TEXT) { 

     xmldoc += xpp.getText(); 
    } 
    eventType = xpp.next(); 

} 

然後我執行以下操作:

mandatory_period = (xml.getValues("reset_periods")); 

這就需要下面的方法:

public ArrayList<String> getValues(String key) { 
    int start = this.xmldoc.indexOf(key + "</string>"); 
    String xmldoc2 = this.xmldoc.substring(start); 
    xmldoc2 = xmldoc2.substring(start + 6, end); 
    String[] spl = xmldoc2.split("<string>"); 
    ArrayList<String> spl2 = new ArrayList<String>(); 
    for (int x = 1; x < spl.length; x++) { 
     String[] spx = spl[x].split("</string>"); 
     spl2.add(spx[0]); 
    } 
    return spl2; 
} 

但我沒有得到字符串數組中的2044-01-01 01:00:002044-01-01 05:00:00

回答

0

這怎麼可以做到這一點:

public String getValues(String key) { 

     int start = this.xmldoc.indexOf(key + "</key><array>"); 
     String xmldoc2 = this.xmldoc.substring(start); 

     int end = xmldoc2.lastIndexOf("</string"); 

     xmldoc2 = xmldoc2.substring(39, end); 

     xmldoc2 = xmldoc2.replace("</string><string>", ","); 

     return xmldoc2; 
    } 

結果:

2044-01-01 01:00:00,2044-01-01 05:00:00