Android 如何解析Xml数据。。。?
我是android原生编码新手,我的Web服务有xml响应,我很困惑。如何解析xml数据并将数据插入字符串数组。。我收到来自服务器的以下响应Android 如何解析Xml数据。。。?,android,xml,parsing,Android,Xml,Parsing,我是android原生编码新手,我的Web服务有xml响应,我很困惑。如何解析xml数据并将数据插入字符串数组。。我收到来自服务器的以下响应 <?xml version="1.0" encoding="UTF-8"?> <soap:Body> <GetActiveThemeListResponse xmlns="http://tempuri.org/"> <GetActiveThemeListResult> <
<?xml version="1.0" encoding="UTF-8"?>
<soap:Body>
<GetActiveThemeListResponse xmlns="http://tempuri.org/">
<GetActiveThemeListResult>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" id="NewDataSet">
<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:UseCurrentLocale="true">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="ActiveThemeList">
<xs:complexType>
<xs:sequence>
<xs:element name="ThemeName" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
<diffgr:diffgram xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<NewDataSet xmlns="">
<ActiveThemeList diffgr:id="ActiveThemeList1" msdata:rowOrder="0">
<ThemeName>sample</ThemeName>
</ActiveThemeList>
<ActiveThemeList diffgr:id="ActiveThemeList2" msdata:rowOrder="1">
<ThemeName>magic</ThemeName>
</ActiveThemeList>
<ActiveThemeList diffgr:id="ActiveThemeList3" msdata:rowOrder="2">
<ThemeName>travel</ThemeName>
</ActiveThemeList>
</NewDataSet>
</diffgr:diffgram>
</GetActiveThemeListResult>
</GetActiveThemeListResponse>
</soap:Body>
</soap:Envelope>
样品
魔术
长途行走
如何获取第二个子节点的数据NewDataSet
我需要将ThemeName
节点值sample
插入数组[];
我需要按如下方式存储数据:
Ex:[样本、魔术、旅行]
任何人的帮助都将不胜感激……您可以使用Jsoup
(从下载--只需将jar添加到您的项目中。如果您有任何问题,请告诉我)
要使用它,您可以写:
List<String> themes = new ArrayList<String>();
// Parse the XML to create a DOM
Document doc = Jsoup.parse(yourXmlAsAString);
// Use the select method to select all ThemeName tags
for (Element elem: doc.select("ThemeName")){
// Use the text method to get the inner text
themes.add(elem.text());
}
与
另一个选项是使用XmlPullParser。与SAX和DOM相比,它的优点是API相对简单,速度快,所需内存比DOM API少。请阅读 举例说明如何使用它
import java.io.IOException;
import java.io.StringReader;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException.html;
import org.xmlpull.v1.XmlPullParserFactory;
public class SimpleXmlPullApp
{
public static void main (String args[])
throws XmlPullParserException, IOException
{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader ("<foo>Hello World!</foo>"));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_DOCUMENT) {
System.out.println("Start document");
} else if(eventType == XmlPullParser.END_DOCUMENT) {
System.out.println("End document");
} else if(eventType == XmlPullParser.START_TAG) {
System.out.println("Start tag "+xpp.getName());
} else if(eventType == XmlPullParser.END_TAG) {
System.out.println("End tag "+xpp.getName());
} else if(eventType == XmlPullParser.TEXT) {
System.out.println("Text "+xpp.getText());
}
eventType = xpp.next();
}
}
}
import java.io.IOException;
导入java.io.StringReader;
导入org.xmlpull.v1.XmlPullParser;
导入org.xmlpull.v1.XmlPullParserException.html;
导入org.xmlpull.v1.XmlPullParserFactory;
公共类SimpleXmlPullApp
{
公共静态void main(字符串参数[])
引发XmlPullParserException,IOException
{
XmlPullParserFactory工厂=XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp=factory.newPullParser();
setInput(新的StringReader(“HelloWorld!”);
int eventType=xpp.getEventType();
while(eventType!=XmlPullParser.END_文档){
if(eventType==XmlPullParser.START\u文档){
System.out.println(“开始文档”);
}else if(eventType==XmlPullParser.END_文档){
系统输出打印项次(“结束文件”);
}else if(eventType==XmlPullParser.START_标记){
System.out.println(“开始标记”+xpp.getName());
}else if(eventType==XmlPullParser.END_标记){
System.out.println(“结束标记”+xpp.getName());
}else if(eventType==XmlPullParser.TEXT){
System.out.println(“Text”+xpp.getText());
}
eventType=xpp.next();
}
}
}
for (Element elem: doc.select("NewDataSet > ThemeName")){
import java.io.IOException;
import java.io.StringReader;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException.html;
import org.xmlpull.v1.XmlPullParserFactory;
public class SimpleXmlPullApp
{
public static void main (String args[])
throws XmlPullParserException, IOException
{
XmlPullParserFactory factory = XmlPullParserFactory.newInstance();
factory.setNamespaceAware(true);
XmlPullParser xpp = factory.newPullParser();
xpp.setInput(new StringReader ("<foo>Hello World!</foo>"));
int eventType = xpp.getEventType();
while (eventType != XmlPullParser.END_DOCUMENT) {
if(eventType == XmlPullParser.START_DOCUMENT) {
System.out.println("Start document");
} else if(eventType == XmlPullParser.END_DOCUMENT) {
System.out.println("End document");
} else if(eventType == XmlPullParser.START_TAG) {
System.out.println("Start tag "+xpp.getName());
} else if(eventType == XmlPullParser.END_TAG) {
System.out.println("End tag "+xpp.getName());
} else if(eventType == XmlPullParser.TEXT) {
System.out.println("Text "+xpp.getText());
}
eventType = xpp.next();
}
}
}