求助,帮忙解析里面的内容用pull方法,完美解决给50分

TaoRenYanLvBu 2015-04-02 03:40:27
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<message xmlns="https://mobile.XXXXXXXX">
<version>4.0</version>
<appVersion>MP_AND_APP_X1_99BILL_01_05_00_15033117_02</appVersion>
<bizType>S110</bizType><responseCode>00</responseCode><responseMsg>成功</responseMsg>
<deviceInfo><mac>81:7a:88:09:97:23</mac><imei>99000291204203</imei><imsi>460031206106299</imsi>
</deviceInfo><userName>12345678910</userName>
<msgContent>
<appInfo><appType>Android</appType>
<latestAppVersion>1.6.0.12</latestAppVersion>
<latestAppVersionUrl>https://XXXXXXXXXX.apk</latestAppVersionUrl>
<appFlag>2</appFlag></appInfo>
</msgContent>
</message>
...全文
721 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
TaoRenYanLvBu 2015-04-03
  • 打赏
  • 举报
回复
   UpdateInfoParser updateInfoParser=new UpdateInfoParser();
			    List<msgContent> b=updateInfoParser.parse(input);
我这样调用,想获取list中的值,总是报空,大神有办法么
TaoRenYanLvBu 2015-04-03
  • 打赏
  • 举报
回复
现在我主函数有个input数据流,或者一个string字符串想调用这个方法,应该怎么调用??
TaoRenYanLvBu 2015-04-03
  • 打赏
  • 举报
回复
没事没事。问题没解决呢,按照你的方法,里面的是方法参数是int类型啊,可是我调用这个方法处理的是数据流或者string字符串,这个该如何解决呢,后来按照我之前的写的,存入list中, 下面是我代码,
public class msgContent  {
	private String appVersion;
	private String latestAppVersion;
	private String latestAppVersionUrl;
	private String appType;
	private String appFlag;
	private String responseCode;
	  public msgContent() {
	        
	    }
	  public msgContent(String appVersion,String latestAppVersion, String latestAppVersionUrl,
			  String appType,String appFlag,String responseCode){
		  this.appFlag=appFlag;
		  this.appType=appType;
		  this.appVersion=appVersion;
		  this.latestAppVersion=latestAppVersion;
		  this.latestAppVersionUrl=latestAppVersionUrl;
		  this.responseCode=responseCode;
		  
	  }
		public String getResponseCode() {
		return responseCode;
	}
	public void setResponseCode(String responseCode) {
		this.responseCode = responseCode;
	}
	public String getAppVersion() {
		return appVersion;
	}
	public void setAppVersion(String appVersion) {
		this.appVersion = appVersion;
	}
	public String getLatestAppVersion() {
		return latestAppVersion;
	}
	public void setLatestAppVersion(String latestAppVersion) {
		this.latestAppVersion = latestAppVersion;
	}
	public String getLatestAppVersionUrl() {
		return latestAppVersionUrl;
	}
	public void setLatestAppVersionUrl(String latestAppVersionUrl) {
		this.latestAppVersionUrl = latestAppVersionUrl;
	}
	public String getAppType() {
		return appType;
	}
	public void setAppType(String appType) {
		this.appType = appType;
	}
	public String getAppFlag() {
		return appFlag;
	}
	public void setAppFlag(String appFlag) {
		this.appFlag = appFlag;
	}
}
public  class UpdateInfoParser extends Activity implements MessageParse { @Override
	public List<msgContent> parse(InputStream inStream) throws Exception {
		 List<msgContent> updateinfolist=null;	
		 msgContent updateinfo=null;
		 XmlPullParser xmlPullParser= Xml.newPullParser();
	     xmlPullParser.setInput(inStream,"UTF-8");     
		 int type=xmlPullParser.getEventType();
		 while(type!=XmlPullParser.END_DOCUMENT){
			 switch (type) {
			 case XmlPullParser.START_DOCUMENT: 
			 {
			    updateinfolist =new ArrayList<msgContent>();
			 }
			 break;
			 case XmlPullParser.START_TAG:
					 String tag=xmlPullParser.getName();
					 updateinfo=new msgContent();
				 if(tag.equalsIgnoreCase("latesAppVersion")){
					 updateinfo.setAppType(xmlPullParser.nextText());
				 }else if(tag.equalsIgnoreCase("appVersion")){
					 updateinfo.setAppVersion(xmlPullParser.nextText());
				 }if(tag.equalsIgnoreCase("responseCode")){
					 updateinfo.setResponseCode(xmlPullParser.nextText());
				 }if(tag.equalsIgnoreCase("appFlag")){
					 updateinfo.setAppFlag(xmlPullParser.nextText());
				 }if(tag.equalsIgnoreCase("appType")){
					 updateinfo.setAppType(xmlPullParser.nextText());
				 }if(tag.equalsIgnoreCase("latestAppVersionUrl")){
					 updateinfo.setLatestAppVersionUrl(xmlPullParser.nextText());
				 }
				 break;
			 case XmlPullParser.END_TAG:
				 if(xmlPullParser.getName().equalsIgnoreCase("appInfo")){
					 updateinfolist.add(updateinfo);
					 updateinfo=null;
				 }
			}
			 type=xmlPullParser.next(); 
		 }
		return updateinfolist;
	}

}
風言楓語 2015-04-03
  • 打赏
  • 举报
回复
引用 14 楼 TaoRenYanLvBu 的回复:
还有个问题啊,比如我有个字符串result,在主mainactivity中调用这个方法的时候怎么调用啊
你好 问题解决了么 不好意思 我下班一般不上CSDN的
風言楓語 2015-04-03
  • 打赏
  • 举报
回复
引用 18 楼 TaoRenYanLvBu 的回复:
   UpdateInfoParser updateInfoParser=new UpdateInfoParser();
			    List<msgContent> b=updateInfoParser.parse(input);
我这样调用,想获取list中的值,总是报空,大神有办法么
汗 刚才有点忙 没时间上csdn 现在才看到你消息,你加我扣 扣吧 469534249
TaoRenYanLvBu 2015-04-02
  • 打赏
  • 举报
回复
还有个问题啊,比如我有个字符串result,在主mainactivity中调用这个方法的时候怎么调用啊
風言楓語 2015-04-02
  • 打赏
  • 举报
回复
引用 12 楼 TaoRenYanLvBu 的回复:
大神,如果这个方法有参数呢
public List<msgContent> parse(String result){}
就像这样的,下面那个setInput又怎么办呢?? 我是想把这个方法封装起来,然后再别处调用它 谢谢你啊先给分给你
 public void xml(int id) throws XmlPullParserException, IOException{
    	String str = "";
   	 XmlPullParser xmlPullParser= Xml.newPullParser();
        xmlPullParser.setInput(getResources().openRawResource(id),"UTF-8");
就这样吧他需要的参数传递进去就ok
TaoRenYanLvBu 2015-04-02
  • 打赏
  • 举报
回复
大神,如果这个方法有参数呢
public List<msgContent> parse(String result){}
就像这样的,下面那个setInput又怎么办呢?? 我是想把这个方法封装起来,然后再别处调用它 谢谢你啊先给分给你
風言楓語 2015-04-02
  • 打赏
  • 举报
回复
 public void xml() throws XmlPullParserException, IOException{
    	String str = "";
   	 XmlPullParser xmlPullParser= Xml.newPullParser();
        xmlPullParser.setInput(getResources().openRawResource(R.raw.file),"UTF-8");     
        int type=xmlPullParser.getEventType();
        while(type!=XmlPullParser.END_DOCUMENT){
            switch (type) {
            case XmlPullParser.START_DOCUMENT: 
            {
//                updateinfolist =new ArrayList<msgContent>();
            }
            break;
            case XmlPullParser.START_TAG:
                    String tag=xmlPullParser.getName();
//                    if(tag.equalsIgnoreCase("appInfo")){
//                        updateinfo=new msgContent();
//                        statrtappInfo=true;
//                    }
                if(tag.equalsIgnoreCase("latesAppVersion")){
//                   updateinfo.setLatestAppVersion(xmlPullParser.getText());
                	str +="=====" + xmlPullParser.nextText()+";" ;
                }else if(tag.equalsIgnoreCase("appVersion")){
//                    updateinfo.setAppVersion(xmlPullParser.getText());
                	str +="=====" + xmlPullParser.nextText()+";" ;
                }if(tag.equalsIgnoreCase("responseCode")){
//                    updateinfo.setResponseCode(xmlPullParser.getText());
                	str +="=====" + xmlPullParser.nextText()+";" ;
                }if(tag.equalsIgnoreCase("appFlag")){
//                    updateinfo.setAppFlag(xmlPullParser.getText());
                	str +="=====" + xmlPullParser.nextText()+";" ;
                }if(tag.equalsIgnoreCase("appType")){
//                    updateinfo.setAppType(xmlPullParser.getText());
                	str +="=====" + xmlPullParser.nextText()+";" ;
                }if(tag.equalsIgnoreCase("latestAppVersionUrl")){
//                    updateinfo.setLatestAppVersionUrl(xmlPullParser.getText());
                	str +="=====" + xmlPullParser.nextText()+";" ;
                }
                break;
            case XmlPullParser.END_TAG:
                if(xmlPullParser.getName().equals("appInfo")){
//                    updateinfolist.add(updateinfo);
//                    updateinfo=null;
                }
           }
            type=xmlPullParser.next(); 
        }
        System.out.print(str);
   }
成功拿到数据
TaoRenYanLvBu 2015-04-02
  • 打赏
  • 举报
回复
求大神啊。。。。怎么解决
TaoRenYanLvBu 2015-04-02
  • 打赏
  • 举报
回复
还是不管用呀 InputStream input = conn.getInputStream(); Looper.prepare(); UpdateInfoParser parse =new UpdateInfoParser(); List<msgContent> b=parse.parse(input); Log.d(TAG, "解析之后的内容"+b); Looper.loop(); 这个代码是返回的数据流,然后调用封装的pull解析方法,之后在日志中查看解析的结果,日志中的解析结果是空
風言楓語 2015-04-02
  • 打赏
  • 举报
回复
赋值不要使用gettext() 使用xmlPullParser.nextText();
風言楓語 2015-04-02
  • 打赏
  • 举报
回复
引用 6 楼 TaoRenYanLvBu 的回复:
package com.bill99.kuaiqian;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Xml;
public class UpdateInfoParser  implements MessageParse{
	private Boolean statrtappInfo=false;
 @Override
	public List<msgContent> parse(InputStream inStream) throws Exception {
		 List<msgContent> updateinfolist=null;	
		 msgContent updateinfo=null;
		 XmlPullParser xmlPullParser= Xml.newPullParser();
	     xmlPullParser.setInput(inStream,"UTF-8");     
		 int type=xmlPullParser.getEventType();
		 while(type!=XmlPullParser.END_DOCUMENT){
			 switch (type) {
			 case XmlPullParser.START_DOCUMENT: 
			 {
				 updateinfolist =new ArrayList<msgContent>();
			 }
			 break;
			 case XmlPullParser.START_TAG:
					 String tag=xmlPullParser.getName();
					 if(tag.equalsIgnoreCase("appInfo")){
						 updateinfo=new msgContent();
						 type=xmlPullParser.next();
						 statrtappInfo=true;
					 }
				 if(tag.equalsIgnoreCase("latesAppVersion")){
					updateinfo.setLatestAppVersion(xmlPullParser.getText());
					type=xmlPullParser.next();
				 }else if(tag.equalsIgnoreCase("appVersion")){
					 updateinfo.setAppVersion(xmlPullParser.getText());
					 type=xmlPullParser.next();
				 }if(tag.equalsIgnoreCase("responseCode")){
					 updateinfo.setResponseCode(xmlPullParser.getText());
					 type=xmlPullParser.next();
				 }if(tag.equalsIgnoreCase("appFlag")){
					 updateinfo.setAppFlag(xmlPullParser.getText());
					 type=xmlPullParser.next();
				 }if(tag.equalsIgnoreCase("appType")){
					 updateinfo.setAppType(xmlPullParser.getText());
					 type=xmlPullParser.next();
				 }if(tag.equalsIgnoreCase("latestAppVersionUrl")){
					 updateinfo.setLatestAppVersionUrl(xmlPullParser.getText());
					 type=xmlPullParser.next();
				 }
				 break;
			 case XmlPullParser.END_TAG:
				 if(xmlPullParser.getName().equals("appInfo")){
					 updateinfolist.add(updateinfo);
					 updateinfo=null;
				 }
			}
			 type=xmlPullParser.next(); 
		 }
		return updateinfolist;
		
	}
	
	
	
	
	
}

type=xmlPullParser.next(); 除了 留下58行的 全部干掉
TaoRenYanLvBu 2015-04-02
  • 打赏
  • 举报
回复
package com.bill99.kuaiqian;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;

import android.util.Xml;
public class UpdateInfoParser  implements MessageParse{
	private Boolean statrtappInfo=false;
 @Override
	public List<msgContent> parse(InputStream inStream) throws Exception {
		 List<msgContent> updateinfolist=null;	
		 msgContent updateinfo=null;
		 XmlPullParser xmlPullParser= Xml.newPullParser();
	     xmlPullParser.setInput(inStream,"UTF-8");     
		 int type=xmlPullParser.getEventType();
		 while(type!=XmlPullParser.END_DOCUMENT){
			 switch (type) {
			 case XmlPullParser.START_DOCUMENT: 
			 {
				 updateinfolist =new ArrayList<msgContent>();
			 }
			 break;
			 case XmlPullParser.START_TAG:
					 String tag=xmlPullParser.getName();
					 if(tag.equalsIgnoreCase("appInfo")){
						 updateinfo=new msgContent();
						 type=xmlPullParser.next();
						 statrtappInfo=true;
					 }
				 if(tag.equalsIgnoreCase("latesAppVersion")){
					updateinfo.setLatestAppVersion(xmlPullParser.getText());
					type=xmlPullParser.next();
				 }else if(tag.equalsIgnoreCase("appVersion")){
					 updateinfo.setAppVersion(xmlPullParser.getText());
					 type=xmlPullParser.next();
				 }if(tag.equalsIgnoreCase("responseCode")){
					 updateinfo.setResponseCode(xmlPullParser.getText());
					 type=xmlPullParser.next();
				 }if(tag.equalsIgnoreCase("appFlag")){
					 updateinfo.setAppFlag(xmlPullParser.getText());
					 type=xmlPullParser.next();
				 }if(tag.equalsIgnoreCase("appType")){
					 updateinfo.setAppType(xmlPullParser.getText());
					 type=xmlPullParser.next();
				 }if(tag.equalsIgnoreCase("latestAppVersionUrl")){
					 updateinfo.setLatestAppVersionUrl(xmlPullParser.getText());
					 type=xmlPullParser.next();
				 }
				 break;
			 case XmlPullParser.END_TAG:
				 if(xmlPullParser.getName().equals("appInfo")){
					 updateinfolist.add(updateinfo);
					 updateinfo=null;
				 }
			}
			 type=xmlPullParser.next(); 
		 }
		return updateinfolist;
		
	}
	
	
	
	
	
}

風言楓語 2015-04-02
  • 打赏
  • 举报
回复
不要直接发代码 用代码格式发 不然看不清楚 例如:
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
TaoRenYanLvBu 2015-04-02
  • 打赏
  • 举报
回复
已经做了,但是最后输出的结果是空值,不知道啥情况
TaoRenYanLvBu 2015-04-02
  • 打赏
  • 举报
回复
package com.bill99.kuaiqian; import java.io.InputStream; import java.util.ArrayList; import java.util.List; import org.xmlpull.v1.XmlPullParser; import android.util.Xml; public class UpdateInfoParser implements MessageParse{ private Boolean statrtappInfo=false; @Override public List<msgContent> parse(InputStream inStream) throws Exception { List<msgContent> updateinfolist=null; msgContent updateinfo=null; XmlPullParser xmlPullParser= Xml.newPullParser(); xmlPullParser.setInput(inStream,"UTF-8"); int type=xmlPullParser.getEventType(); while(type!=XmlPullParser.END_DOCUMENT){ switch (type) { case XmlPullParser.START_DOCUMENT: { updateinfolist =new ArrayList<msgContent>(); } break; case XmlPullParser.START_TAG: String tag=xmlPullParser.getName(); if(tag.equalsIgnoreCase("appInfo")){ updateinfo=new msgContent(); type=xmlPullParser.next(); statrtappInfo=true; } if(tag.equalsIgnoreCase("latesAppVersion")){ updateinfo.setLatestAppVersion(xmlPullParser.getText()); type=xmlPullParser.next(); }else if(tag.equalsIgnoreCase("appVersion")){ updateinfo.setAppVersion(xmlPullParser.getText()); type=xmlPullParser.next(); }if(tag.equalsIgnoreCase("responseCode")){ updateinfo.setResponseCode(xmlPullParser.getText()); type=xmlPullParser.next(); }if(tag.equalsIgnoreCase("appFlag")){ updateinfo.setAppFlag(xmlPullParser.getText()); type=xmlPullParser.next(); }if(tag.equalsIgnoreCase("appType")){ updateinfo.setAppType(xmlPullParser.getText()); type=xmlPullParser.next(); }if(tag.equalsIgnoreCase("latestAppVersionUrl")){ updateinfo.setLatestAppVersionUrl(xmlPullParser.getText()); type=xmlPullParser.next(); } break; case XmlPullParser.END_TAG: if(xmlPullParser.getName().equals("appInfo")){ updateinfolist.add(updateinfo); updateinfo=null; } } type=xmlPullParser.next(); } return updateinfolist; } }
風言楓語 2015-04-02
  • 打赏
  • 举报
回复
这个自己百度一下有很多的 直接给代码的话没人时间帮你去做,而且自己做的话效果更好,你可以在做的过程中把遇到的不能解决问题发出来
TaoRenYanLvBu 2015-04-02
  • 打赏
  • 举报
回复
这是从服务器返回的数据流。。。直接解析数据流
/// /// 发送消息 /// /// IP地址 /// 端口 /// 消息停留时间(毫秒) /// 接受者 (不填则发送给所有人,多个接收者用";"号开) /// 消息标题 /// 消息内容 /// 是否发送成功 public bool SendNotify(string ShowTime, string Receivers, string MsgTitle, string MsgContent) { try { RootObj = new RTXSAPIRootObj(); //创建根对象 RootObj.ServerIP = System.Configuration.ConfigurationManager.AppSettings["RtxIp"]; //设置服务器IP RootObj.ServerPort = Convert.ToInt16(System.Configuration.ConfigurationManager.AppSettings["RtxPort"]); //设置服务器端口 RootObj.SendNotify(Receivers, MsgTitle, Convert.ToInt32(ShowTime), MsgContent); //发送消息 return true; } catch (COMException ex) { errLog.WriteEntry(ex.Message, System.Diagnostics.EventLogEntryType.Error); return false; } } /// /// 发送短信 /// /// 服务器IP /// 服务器端口 /// 发送者 /// 发送者密码 /// 接受者 (不填则发送给所有人,多个接收者用";"号开) /// 短信内容 /// SessionID System.Guid{F41886B6-D593-4868-A25E-377C8727D7B6} /// 是否发送成功 public bool SendIM(string Sender, string Pwd, string Receivers, string Content, string SessionID) { try { RootObj = new RTXSAPIRootObj(); //创建根对象 RootObj.ServerIP = System.Configuration.ConfigurationManager.AppSettings["RtxIp"]; //设置服务器IP RootObj.ServerPort = Convert.ToInt16(System.Configuration.ConfigurationManager.AppSettings["RtxPort"]); //设置服务器端口 if (SessionID == "") { SessionID = @"{" + System.Guid.NewGuid().ToString() + @"}"; } RootObj.SendIM(Sender, Pwd, Receivers, Content, SessionID); return true; } catch (COMException ex) { errLog.WriteEntry(ex.Message, System.Diagnostics.EventLogEntryType.Error); return false; } } 联系QQ:三三155948 联系邮箱:anbyliu※gmail.com
<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%> 留言板首页 <script language="javascript">
 
<%if session("$_name$")="" then%>
用户名: 密码:    
<%else%>
<%=session("$_name$")%> 您 好,欢 迎 您 来 到 潇 湘 尘 影 的 留 言 板 【控制面板】 退出登录
<%end if%>
<%dim rs,sql,p,q set rs=server.CreateObject("adodb.recordset") sql="select * from userDetail,Msg where userDetail.UserName=Msg.MsgAuthor order by MsgID desc" rs.open sql,conn,1,1 rs.pagesize=5 q=10 '设置每页可以浏览的页的总数 if request.QueryString("p")<>"" then p=CInt(request.QueryString("p")) else p=0 'p=0时,则翻页数字显示1 2 3 4 5,p=1时,则翻页数字显示6 7 8 9 10,依次类推 end if if request.QueryString("iPage")<>"" then iPage=CInt(request.QueryString("iPage")) 'if iPage<1 then iPage=1 'if iPage>rs.pageCount then iPage=rs.pageCount else iPage=1 end if rs.AbsolutePage=iPage%> 共有<%=rs.recordcount%>条留言 | 共<%=rs.pagecount%>页 | 当前为第<%=rs.AbsolutePage%>
<% if rs.eof then response.write("
暂无留言
") else for i=0 to rs.pageSize-1 if rs.Eof or rs.bof then exit for %>
<%=rs("UserName")%> 标题:<%=rs("MsgTitle")%>
<%=rs("UserHeadPic")%>
QQ:<%=rs("UserQQ")%>| " title="发邮件给他/她">
<%=rs("MsgDate")%>
    <%=rs("MsgContent")%>
<%if rs("MsgReply")<>"" then%>
管理员回复
(<%=rs("MsgReDate")%>)
<%=rs("MsgReply")%>
<%end if%>
<%if session("$_name$")=rs("MsgAuthor") then%>">编辑 | <%end if%><%if session("$_name$")="admin" then%>">回复 | ">删除<%end if%> 
<% rs.movenext next end if %>
<%if p<>0 then%> << <%else%> << <%end if%> <%for j=1 to q if(p*q+j<=rs.pageCount) then if(iPage<>q*p+j) then%> <%=q*p+j%> <%else%> <%=q*p+j%> <% end if end if next%> <%if p<>(rs.pageCount\q) then%> >> <%else%> >> <%end if%> <% rs.close set rs=nothing conn.close set conn=nothing%>

80,475

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧