2016-09-20 9 views
1

私は残りのAPIのunityWebRequestからこの応答を得ました。xmlレスポンスを統一で読むAndroid

私が望むのは、それぞれのオブジェクトの名前と値、つまりテーブル内の値です。 名前を文字列と値としてintとして使用したいと思います。

どうすればいいですか?

私は多くのチュートリアルを見ましたが、すべてはローカルで利用できるxmldocumentを使用しています。

これを行うコードを教えてください。事前に

おかげすでに応答stringていたよう

<HEAD> 
    <TITLE>Property Listing For SimulationData</TITLE> 
    <LINK rel='Stylesheet' href='/Thingworx/css/thingworxapi.css' type='text/css'></LINK> 
    <META http-equiv='Content-Type' content='text/html'></META> 
    <META http-equiv='cache-control' content='no-cache, no-store'></META> 
    <META http-equiv='expires' content='-1'></META> 
    <META http-equiv='pragma' content='no-cache, no-store'></META> 
    <META http-equiv='refresh' content='30'></META> 
</HEAD> 
<BODY> 
    <IMG SRC="/Thingworx/images/ThingworxLogo.png"/> 
    <BR/> 
    <H1>Property Listing For SimulationData</H1> 
    <TABLE> 
     <TR> 
      <TH>name</TH> 
      <TH>value</TH> 
     </TR> 
     <TR> 
      <TD>ActualSpeed</TD> 
      <TD>0</TD> 
     </TR> 
     <TR> 
      <TD>AirPressure</TD> 
      <TD>8.0</TD> 
     </TR> 
     <TR> 
      <TD>Capacity</TD> 
      <TD>1500.0</TD> 
     </TR> 
     <TR> 
      <TD>Conveyor_Speed</TD> 
      <TD>75.0</TD> 
     </TR> 
     <TR> 
      <TD>CurrentTemperature</TD> 
      <TD>0</TD> 
     </TR> 
     <TR> 
      <TD>description</TD> 
      <TD></TD> 
     </TR> 
     <TR> 
      <TD>GetEquipment</TD> 
      <TD> 
       <TABLE> 
        <TR> 
         <TH>Machine_Name</TH> 
        </TR> 
       </TABLE> 
      </TD> 
     </TR> 
     <TR> 
      <TD>IdealSpeed</TD> 
      <TD>1</TD> 
     </TR> 
     <TR> 
      <TD>isConnected</TD> 
      <TD>true</TD> 
     </TR> 
     <TR> 
      <TD>lastConnection</TD> 
      <TD>2016-09-15T15&#x3a;16&#x3a;32.111&#x2b;05&#x3a;30</TD> 
     </TR> 
     <TR> 
      <TD>lastConnectionError</TD> 
      <TD></TD> 
     </TR> 
     <TR> 
      <TD>LinearSpeed</TD> 
      <TD>3.5</TD> 
     </TR> 
     <TR> 
      <TD>Loadweight</TD> 
      <TD>0.0</TD> 
     </TR> 
     <TR> 
      <TD>MilkBikiLowerRange</TD> 
      <TD>98.0</TD> 
     </TR> 
     <TR> 
      <TD>MilkBikiUpperRange</TD> 
      <TD>108.0</TD> 
     </TR> 
     <TR> 
      <TD>name</TD> 
      <TD>SimulationData</TD> 
     </TR> 
     <TR> 
      <TD>NiceLowerRange</TD> 
      <TD>91.0</TD> 
     </TR> 
     <TR> 
      <TD>NiceUpperRange</TD> 
      <TD>99.0</TD> 
     </TR> 
     <TR> 
      <TD>NoOfRotationAgitator</TD> 
      <TD>0.0</TD> 
     </TR> 
     <TR> 
      <TD>NoofRotationConveyor</TD> 
      <TD>0.0</TD> 
     </TR> 
     <TR> 
      <TD>NoOfRotationsRotaryMould</TD> 
      <TD>30.0</TD> 
     </TR> 
     <TR> 
      <TD>NorthEast</TD> 
      <TD>34.2646815,85.7826173,0.0</TD> 
     </TR> 
     <TR> 
      <TD>NorthWest</TD> 
      <TD>33.5872439,56.2797477,0.0</TD> 
     </TR> 
     <TR> 
      <TD>OvenTemperature</TD> 
      <TD>50.0</TD> 
     </TR> 
     <TR> 
      <TD>PickPlace</TD> 
      <TD>50.0</TD> 
     </TR> 
     <TR> 
      <TD>Power</TD> 
      <TD>24.0</TD> 
     </TR> 
     <TR> 
      <TD>ScrapCount</TD> 
      <TD>0</TD> 
     </TR> 
     <TR> 
      <TD>SouthEast</TD> 
      <TD>12.9036622,92.4436689,0.0</TD> 
     </TR> 
     <TR> 
      <TD>SouthWest</TD> 
      <TD>39.3923528,29.8171935,0.0</TD> 
     </TR> 
     <TR> 
      <TD>tags</TD> 
      <TD>Britania_POC&#x3a;Biscuit_POC&#x3b;FAndB_DemoKit&#x3a;F&amp;B_DemoKit</TD> 
     </TR> 
     <TR> 
      <TD>thingTemplate</TD> 
      <TD>MSSQL</TD> 
     </TR> 
     <TR> 
      <TD>TigerLowerRange</TD> 
      <TD>100.0</TD> 
     </TR> 
     <TR> 
      <TD>TigerUpperRange</TD> 
      <TD>92.0</TD> 
     </TR> 
     <TR> 
      <TD>TotalWorkingTime</TD> 
      <TD>300</TD> 
     </TR> 
     <TR> 
      <TD>VibrationPresence</TD> 
      <TD>No Vibration</TD> 
     </TR> 
    </TABLE> 
</BODY> 

答えて

1

あなたはこのようにそれを解析することによってXMLElementを作成することができた:

XElement response= XElement.Parse(responseString); 

OR

あなたはこのようXMLDocumentを作成することができます。

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(responseString); 

注:あなたの応答文字列が有効なXML構文である必要があります。

XPath式を使用して必要な情報を抽出する必要があります。

UPDATE:

void Start() 
{ 
    string yourActualResponse = "your actual response goes here"; 
    StringBuilder responseString = new StringBuilder(@"<?xml version='1.0'?>"); 
    responseString.AppendLine(@"<reponse>"); 
    responseString.AppendLine(yourActualResponse); 
    responseString.AppendLine(@"</reponse>"); 

    XmlDocument doc = new XmlDocument(); 
    doc.LoadXml(responseString.ToString()); 

    XmlNodeList nodes = doc.DocumentElement.SelectNodes("//TR/TD"); 
    foreach (XmlNode node in nodes) 
    { 
     Debug.Log(node.InnerText); 
    } 
} 
ここ

始めるためにいくつかのリンクです:

https://msdn.microsoft.com/en-us/library/cc189056(VS.95).aspx

https://msdn.microsoft.com/en-us/library/d271ytdx(v=vs.110).aspxがここ

は、サンプルコードで、それはあなたのアイデアを与えるだろう

パスに無効な文字:0

https://msdn.microsoft.com/en-us/library/ms256086(v=vs.110).aspx

ホープこれは

+0

このエラーArgumentExceptionが手に入れたのに役立ちます。 System.IO.Path.IsPathRooted(System.Stringパス)(/Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/Path.cs:508) System.IO.Path。 InsecureGetFullPath(System.Stringパス)(/Users/builduser/buildslave/mono/build/mcs/class/corlib/System.IO/Path.cs:357) UnityEngine.SetupCoroutine.InvokeMoveNext(IEnumerator列挙子、IntPtr returnValueAddress) C:/buildslave/unity/build/Runtime/Export/Coroutines.cs:17) –

+0

私はこのコマンドを与えて応答文字列を受け取りました。 xmlDoc.Load(www.downloadHandler.text); –

+0

あなたが投稿したレスポンステキストは、NOT XML、そのHTMLです。そしてxmlは '' emelentで始まり、その後は一つのルート要素しか持てません。この[サンプルファイル](https://msdn.microsoft.com/en-us/library/ms762271(v=vs.85).aspx) –