2014-11-07 1 views
1

의 XML 문자열 데이터 변환/처리 문제점 : Xamarin.IOS를 사용하여 Moment에서 IOS 응용 프로그램을 개발 중입니다. 지금까지 JSON Webservices를 사용하여 작업 해 왔지만 이제 XML 문자열을 반환하는 weather-API를 사용해야합니다. 구문 분석하는 방법을 알아낼 수 없으므로 코드에서 해당 데이터에 액세스 할 수 있습니다.모노 터치 (Xamarin)/C#

해결 시도 : 나는 배열, 사전, 사용자 정의 개체 등으로 파싱하기 위해 C# 자습서의 힙을 이미 살펴 봤지만 대부분의 라이브러리에서 필요하지 않은 문제가 있습니다. 모노 터치 내에서 액세스.

그러나 이에 상응하는 것이 있어야합니다.

JsonConvert.SerializeXmlNode(...); 

가 Monotouch에서 사용할 수 없습니다 예를 들어, 방법,

은 내가 JSON으로 변환하려고, 그래서는 여기에 평소 가지로 사용할 수 있습니다. 어셈블리 참조가 있지만 일부 특정 메서드가 누락되었습니다.

누구나 해결책을 제안하거나 방향을 알려줄 수 있습니까? 이것에 대해 설명 할 수있는 모든 조명은 정말 감사하겠습니다. 감사.

코드 피 : 이것은 웹 서비스를 요청할 때 얻는 것입니다.

XmlDocument xmlDoc = new XmlDocument(); 
xmlDoc.LoadXml(dataString); 
foreach (XmlElement x in xmlDoc.SelectNodes("weather/data/location/pcode")) 
{ 
    Console.Write(x.InnerXml); 
} 

dataStringString 포함 된 XML입니다 다음과 같이 http://developer.xamarin.com/guides/ios/under_the_hood/assemblies/

당신이 XMLDocument로의 데이터를 분석 할 수 있습니다 :

<?xml version="1.0" encoding="UTF-8" ?> 

<weather> 
<data> 
    <location> 

     <pcode>21335</pcode> 
    </location> 

    <day date="07.11.2014"> 
     <tmax>10</tmax> 
     <tmin>2</tmin> 
     <wrcode>13</wrcode> 
     <symbol>regenschauer</symbol> 
     <rr>20</rr> 
     <windforce_bft>4</windforce_bft> 
     <windforce_kmh>22</windforce_kmh> 
     <winddir>SO</winddir> 
     <sunrise>07:28</sunrise> 
     <sunset>16:36</sunset> 
     <sunshine>6</sunshine> 

     <details> 
      <temp_m>6</temp_m> 
      <symbol_m>heiter</symbol_m> 
      <wrcode_m>4</wrcode_m> 
      <windforce_bft_m>4</windforce_bft_m> 
      <windforce_kmh_m>20</windforce_kmh_m> 
      <winddir_m>S</winddir_m> 
      <rr_m>5</rr_m> 
      <temp_a>10</temp_a> 
      <symbol_a>wolkig</symbol_a> 
      <wrcode_a>5</wrcode_a> 
      <windforce_bft_a>4</windforce_bft_a> 
      <windforce_kmh_a>22</windforce_kmh_a> 
      <winddir_a>SO</winddir_a> 
      <rr_a>20</rr_a> 
      <temp_e>9</temp_e> 
      <wrcode_e>13</wrcode_e> 
      <symbol_e>regenschauer</symbol_e> 
      <windforce_bft_e>4</windforce_bft_e> 
      <windforce_kmh_e>22</windforce_kmh_e> 
      <winddir_e>S</winddir_e> 
      <rr_e>70</rr_e> 
      <temp_n>6</temp_n> 
      <wrcode_n>5</wrcode_n> 
      <symbol_n>wolkig_n</symbol_n> 
      <windforce_bft_n>4</windforce_bft_n> 
      <windforce_kmh_n>20</windforce_kmh_n> 
      <winddir_n>S</winddir_n> 
      <rr_n>40</rr_n>   
     </details> 

    </day> 

    <day date="08.11.2014"> 
     <tmax>11</tmax> 
     <tmin>6</tmin> 
     <wrcode>5</wrcode> 
     <symbol>wolkig</symbol> 
     <rr>30</rr> 
     <windforce_bft>4</windforce_bft> 
     <windforce_kmh>22</windforce_kmh> 
     <winddir>SW</winddir> 
     <sunrise>07:30</sunrise> 
     <sunset>16:34</sunset> 
     <sunshine>3</sunshine> 

     <details> 
      <temp_m>9</temp_m> 
      <symbol_m>bedeckt</symbol_m> 
      <wrcode_m>6</wrcode_m> 
      <windforce_bft_m>4</windforce_bft_m> 
      <windforce_kmh_m>28</windforce_kmh_m> 
      <winddir_m>S</winddir_m> 
      <rr_m>30</rr_m> 
      <temp_a>11</temp_a> 
      <symbol_a>wolkig</symbol_a> 
      <wrcode_a>5</wrcode_a> 
      <windforce_bft_a>4</windforce_bft_a> 
      <windforce_kmh_a>22</windforce_kmh_a> 
      <winddir_a>SW</winddir_a> 
      <rr_a>15</rr_a> 
      <temp_e>10</temp_e> 
      <wrcode_e>5</wrcode_e> 
      <symbol_e>wolkig</symbol_e> 
      <windforce_bft_e>3</windforce_bft_e> 
      <windforce_kmh_e>19</windforce_kmh_e> 
      <winddir_e>S</winddir_e> 
      <rr_e>10</rr_e> 
      <temp_n>6</temp_n> 
      <wrcode_n>5</wrcode_n> 
      <symbol_n>wolkig_n</symbol_n> 
      <windforce_bft_n>3</windforce_bft_n> 
      <windforce_kmh_n>19</windforce_kmh_n> 
      <winddir_n>SO</winddir_n> 
      <rr_n>10</rr_n>   
     </details> 

    </day> 

    <day date="09.11.2014"> 
     <tmax>11</tmax> 
     <tmin>6</tmin> 
     <wrcode>5</wrcode> 
     <symbol>wolkig</symbol> 
     <rr>30</rr> 
     <windforce_bft>4</windforce_bft> 
     <windforce_kmh>24</windforce_kmh> 
     <winddir>SO</winddir> 
     <sunrise>07:32</sunrise> 
     <sunset>16:32</sunset> 
     <sunshine>3</sunshine> 

     <details> 
      <temp_m>9</temp_m> 
      <symbol_m>wolkig</symbol_m> 
      <wrcode_m>5</wrcode_m> 
      <windforce_bft_m>4</windforce_bft_m> 
      <windforce_kmh_m>22</windforce_kmh_m> 
      <winddir_m>SO</winddir_m> 
      <rr_m>15</rr_m> 
      <temp_a>11</temp_a> 
      <symbol_a>bedeckt</symbol_a> 
      <wrcode_a>6</wrcode_a> 
      <windforce_bft_a>4</windforce_bft_a> 
      <windforce_kmh_a>24</windforce_kmh_a> 
      <winddir_a>SO</winddir_a> 
      <rr_a>30</rr_a> 
      <temp_e>10</temp_e> 
      <wrcode_e>5</wrcode_e> 
      <symbol_e>wolkig</symbol_e> 
      <windforce_bft_e>3</windforce_bft_e> 
      <windforce_kmh_e>19</windforce_kmh_e> 
      <winddir_e>S</winddir_e> 
      <rr_e>10</rr_e> 
      <temp_n>7</temp_n> 
      <wrcode_n>5</wrcode_n> 
      <symbol_n>wolkig_n</symbol_n> 
      <windforce_bft_n>3</windforce_bft_n> 
      <windforce_kmh_n>17</windforce_kmh_n> 
      <winddir_n>SW</winddir_n> 
      <rr_n>20</rr_n>   
     </details> 

    </day> 

    <day date="10.11.2014"> 
     <tmax>10</tmax> 
     <tmin>7</tmin> 
     <wrcode>13</wrcode> 
     <symbol>regenschauer</symbol> 
     <rr>60</rr> 
     <windforce_bft>3</windforce_bft> 
     <windforce_kmh>19</windforce_kmh> 
     <winddir>S</winddir> 
     <sunrise>07:34</sunrise> 
     <sunset>16:31</sunset> 
     <sunshine>2</sunshine> 

    </day> 

    <day date="11.11.2014"> 
     <tmax>11</tmax> 
     <tmin>7</tmin> 
     <wrcode>5</wrcode> 
     <symbol>wolkig</symbol> 
     <rr>20</rr> 
     <windforce_bft>4</windforce_bft> 
     <windforce_kmh>20</windforce_kmh> 
     <winddir>SO</winddir> 
     <sunrise>07:35</sunrise> 
     <sunset>16:29</sunset> 
     <sunshine>5</sunshine> 

    </day> 

    <day date="12.11.2014"> 
     <tmax>11</tmax> 
     <tmin>8</tmin> 
     <wrcode>5</wrcode> 
     <symbol>wolkig</symbol> 
     <rr>20</rr> 
     <windforce_bft>4</windforce_bft> 
     <windforce_kmh>20</windforce_kmh> 
     <winddir>O</winddir> 
     <sunrise>07:37</sunrise> 
     <sunset>16:27</sunset> 
     <sunshine>4</sunshine> 

    </day> 

    <actual_weather> 
     <date_time>Freitag, 23:00 Uhr</date_time> 
     <symbol>bedeckt_n</symbol> 
     <temp>7,4</temp> 
     <weatherdesc>Stark bewölkt</weatherdesc> 
     <windforce_bft>3</windforce_bft> 
     <windforce_kmh>14</windforce_kmh> 
     <winddir>SSW</winddir> 
    </actual_weather> 

</data> 

+1

xamarin 컴포넌트 Json.NET을 사용하여 json을 쉽게 파싱 할 수있다. 도움이 될만한 http://appliedcodelog.blogspot.in/2015/06/weather-condition-and-forecast-app.html#Implementation – Suchith

답변

2

Monotouch는 기본적으로 System.Xml 네임 스페이스를 포함 . 스트림을 사용하려면 대신 xmlDoc.Load(Stream)을 사용하십시오. SelectNodes의 인수는 XPath 식입니다. 나는 사람들이 W3Schools을 좋아하지 않는다는 것을 알고있다. 그러나 그들은 괜찮은 Xpath 튜토리얼을 여기에 가지고있다 : http://www.w3schools.com/xpath/