1

すべての州のポイントを含むファイルがあります。各状態のオーバーレイを作成できるように解析したい。そのxmlだと思いますが、element_data形式の従来のものではありません。

誰かがそのplist xmlについて言及しました。

このタイプのデータを解析する最良の方法は何ですか:

<states>
<state name ="Alaska" colour="#ff0000" >
  <point lat="70.0187" lng="-141.0205"/>
  <point lat="70.1292" lng="-141.7291"/>
  <point lat="70.4515" lng="-144.8163"/>
  <point lat="70.7471" lng="-148.4583"/>
  <point lat="70.7923" lng="-151.1609"/>
  <point lat="71.1470" lng="-152.6221"/>
  <point lat="71.1185" lng="-153.9954"/>
  <point lat="71.4307" lng="-154.8853"/>
  <point lat="71.5232" lng="-156.7529"/>
  <point lat="71.2796" lng="-157.9449"/>
  <point lat="71.2249" lng="-159.6313"/>
  <point lat="70.6363" lng="-161.8671"/>
  <point lat="70.0843" lng="-163.5809"/>
  <point lat="69.3028" lng="-165.2399"/>
  <point lat="69.1782" lng="-166.8768"/>
  <point lat="68.3344" lng="-168.0414"/>
4

2 に答える 2

2

コード :

NSString* filePath = [[NSBundle mainBundle] pathForResource:@"data" 
                                                     ofType:@"xml"];

NSString* xmlStr = [NSString stringWithContentsOfFile:filePath
                                             encoding:NSUTF8StringEncoding 
                                                error:nil];

NSXMLDocument* xml = [[NSXMLDocument alloc] initWithXMLString:xmlStr
                                                      options:NSXMLDocumentTidyXML 
                                                       error:nil];

NSMutableDictionary* states = [xml getChildrenInDictionary:@"states"];

メソッドは、getChildrenInDictionary私が書いたカテゴリで宣言されていますNSXMLDocument

NSXMLDocument カテゴリ:

- (NSDictionary*)getChildrenInDictionary:(NSString *)path
{
    NSMutableDictionary* result = [NSMutableDictionary dictionary];

    NSArray* nodes = [[[self nodesForXPath:path error:nil] objectAtIndex:0] children];

    for (NSXMLElement* element in nodes)
    {
        [result setValue:[element stringValue] 
                  forKey:[element name]];
    }

    return result;
}

補足:私にとっては、これは完全に有効な XML ファイルであり、処理する必要があります。:-)

于 2012-04-10T20:52:04.600 に答える
1

これは、自家製の XML のように見えます。実際には標準ベースの文法ではない XML としてデータを生成することは珍しくありません。

その理由は、XML の構文解析が容易であるためです。これは、構文規則があることと、XML エコシステムが成熟しており、構文解析用のツールが多数あることなどの理由からです。

公式の文法の一部ではないからといって、あなたのデータが役に立たないわけではありません! XSLT を使用して、公式の別の XML 文法に変換できます。まず第一に、SVG が最善の策だと思います。SVG パスで役立つ非常に具体的なポイント データがたくさんあるからです。

于 2012-04-10T20:54:44.430 に答える