我有没有这个问题,现在我正在使用eclipse ide的android上的SOAP方法使用Web服务。它的工作正常。请找到我的服务链接
“http://54.251.60.177/MobileWS/Student.asmx?wsdl”
“GetStudentInformation”,这是我正在使用的服务,其输入值为“111105009”
如果我将此值作为上述服务的输入,它只是在模拟器上显示结果,如下图所示,并公开显示这些内容。
IMAGE_1
IMAGE_2
但是我的问题是,上面的image_2显示了所有带有答案的xml标签,但我只需要显示我在image_2上提到的答案。如何实现这个概念?
请在下方找到我的来源
WebMethod.java
public class GetStudentInformation
{
public String GetStudentInformation(String sStudentCode)
{
return sStudentCode;
} }
Demo_tabActivity.java
public class Demo_tabActivity extends Activity
{
private static String NAMESPACE = "http://tempuri.org/";
private static String METHOD_NAME = "GetStudentInformation";
private static String SOAP_ACTION = "http://tempuri.org/GetStudentInformation";
private static String URL = "http://54.251.60.177/MobileWS/Student.asmx?WSDL";
Button btnFar;
EditText txtFar;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
txtFar = (EditText)findViewById(R.id.editText_in);
btnFar = (Button)findViewById(R.id.button1);
btnFar.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
String b;
//Initialize soap request + add parameters
SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
//Use this to add parameters
request.addProperty("sStudentCode",txtFar.getText().toString());
//Declare the version of the SOAP request
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.setOutputSoapObject(request);
envelope.dotNet = true;
try
{
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
//this is the actual part that will call the webservice
androidHttpTransport.call(SOAP_ACTION, envelope);
// Get the SoapResult from the envelope body.
SoapPrimitive result = (SoapPrimitive)envelope.getResponse();
if (result != null)
{
//Get the first property and change the label text
b = result.toString();
Intent myIntent = new Intent(Demo_tabActivity.this, Tabhost.class);
myIntent.putExtra("result1", b);
startActivity(myIntent);
}
else
{
Toast.makeText(getApplicationContext(), "No Response",Toast.LENGTH_SHORT).show();
}
}
catch (Exception e)
{
e.printStackTrace();
}
}
});
}
}
Tabhost.java
public class Tabhost extends TabActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
String result1;
Bundle extras = getIntent().getExtras();
if(extras!=null)
{
result1 = extras.getString("result1");
} else result1 = "Didnt work !" ;
TabHost tabHost = getTabHost();
TabHost.TabSpec spec;
Intent intent;
intent = new Intent().setClass(this, Tab_1.class);
intent.putExtra("result1", result1);
spec = tabHost.newTabSpec("first").setIndicator("First").setContent(intent);
tabHost.addTab(spec);
intent = new Intent().setClass(this, Tab_2.class);
spec = tabHost.newTabSpec("second").setIndicator("Second").setContent(intent);
tabHost.addTab(spec);
tabHost.setCurrentTab(0);
}
}
Tab_1.java
public class Tab_1 extends Activity
{
TextView tv1;
String result1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
Bundle extras = getIntent().getExtras();
if(extras != null)
{
result1 = extras.getString("result1");
}
else result1 = "didnt work";
tv1 = (TextView)findViewById(R.id.textView_main2);
tv1.setText(result1);
}
}
Tab_2.java
public class Tab_2 extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main3);
}
}
感谢您宝贵的时间!..
答案 0 :(得分:0)
StudentModel.java
package com.cws.model;
public class StudentModel
{
private static String StudentName;
private static String NoOfDayPresent;
private static String NoOfDayAbsent;
public String getStudentName(){
return StudentName;
}
public void setStudentName(String studentname){
StudentName=studentname;
}
public String getNoOfDayPresent(){
return NoOfDayPresent;
}
public void setNoOfDayPresent(String noOfDayPresent){
NoOfDayPresent=noOfDayPresent;
}
....Similarly Create getter and setter methhods for remaining variables Here
}
现在以这种方式从具有结果值的活动中调用解析方法
StudentModel student=new StudentModel();
Parsing parsing=new Parsing();
student=parsing.parseByDOM(result1);
现在您可以通过这种方式访问这些值了。
mytextView1.setText(student.getStudentName());
.
mytextView2.setText(student.getNoOfDayPresent());
.
.
Parsing.class
import java.io.IOException;
import java.io.StringReader;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
import com.cws.model.ResumeCover;
public class StudentDataParser {
public StudentModel parseByDOM(String response) throws ParserConfigurationException,
SAXException, IOException
{
StudentModel sm=new StudentModel();
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new InputSource(new StringReader(response)));
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("row");
for (int temp = 0; temp < nList.getLength(); temp++)
{
Node nNode = nList.item(temp);
if (nNode.getNodeType() == Node.ELEMENT_NODE)
{
Element eElement = (Element) nNode;
sm.setStudentName(getTagValue("FirstName", eElement));
sm.setNoOfDayPresent(getTagValue("NoOfDayPresent", eElement));
<----Similarly set All the Values Of all variables-->
}
}
return sm;
}
private static String getTagValue(String sTag, Element eElement)
{
NodeList nlList = eElement.getElementsByTagName(sTag).item(0).getChildNodes();
if(nlList.getLength()>0)
{
Node nValue = (Node) nlList.item(0);
return nValue.getNodeValue();
}
else
return "-";
}
}