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();
           }
         }
       });
   }
}

タブホスト.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 を使用してこのように解析できます。
  • ここでは、データの解析後に詳細を保存するモデル クラスを作成する必要があります。

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());
.
.

解析クラス

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 に答える