0

有谁有这个问题,现在我正在使用 Eclipse ide 在 android 上通过 SOAP 方法使用 Web 服务。它工作正常。请找到我的服务链接

http://54.251.60.177/MobileWS/Student.asmx?wsdl

“GetStudentInformation”,这是我正在使用的服务,其输入值为“111105009”

如果我将此值作为上述服务的输入,它只会在模拟器上显示如下图所示的结果,并公开显示这些内容。

图像_1

在此处输入图像描述

图像_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);
    }
}

感谢您宝贵的时间!..

4

1 回答 1

0
  • 您得到的 XML 结果字符串将被解析。Ypu 可以使用 Dom Parsing 像这样解析它。
  • 在这里,您必须创建一个模型类,它将在解析数据后保存详细信息。

学生模型.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
}  

现在以这种方式从具有 Result 值的 Activity 调用解析方法

StudentModel student=new StudentModel();
Parsing parsing=new Parsing();  
student=parsing.parseByDOM(result1);

现在您可以通过这种方式访问​​值..

mytextView1.setText(student.getStudentName());
.
mytextView2.setText(student.getNoOfDayPresent());
.
.

解析.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 "-";

    }
}
于 2012-07-21T07:05:54.260 回答