【问题标题】:NSXML Parse for iOSiOS 的 NSXML 解析
【发布时间】:2013-02-10 22:34:47
【问题描述】:

我有一个具有这种结构的 xml(kml):

<Document>
<Folder>
    <Folder>
        <name>A -</name>
        <Placemark>
            <name>Afghanistan</name>
            <description></description>
            <Style>
                <PolyStyle>
                    <color>aaffffff</color>
                    <colorMode>random</colorMode>
                </PolyStyle>
            </Style>
            <Polygon>
                <outerBoundaryIs>
                    <LinearRing>
                        <coordinates> 65.62729644775391,37.33319854736328,0 65.64692687988283,37.45888137817383,0</coordinates>
                    </LinearRing>
                </outerBoundaryIs>
            </Polygon>
        </Placemark>
        <Placemark>
            <name>Albania</name>

我正在尝试获取每个国家/地区的名称及其坐标并将它们保存在数组中。 这个给了我 elementValue 的“Placemark”和 urlValue 的“null”。

if ([elementName isEqualToString:@"Placemark"]){
    NSString *urlValue=[attributeDict valueForKey:@"name"];

    NSLog(@"I just found a start tag for %@ %@",elementName,urlValue);

}

我应该使用任何其他代表吗?我在这里做错了什么?

【问题讨论】:

    标签: ios xml parsing nsxml


    【解决方案1】:

    &lt;name&gt; 不是&lt;Placemark&gt; 的属性,它是一个子元素。您需要设置一个标志或一些此类方法,并等待解析器通过parser:didStartElement:... 再次调用委托,其中“名称”作为元素名称。当您到达“地标”上的parser:didEndElement:... 时,您可以再次关闭该标志,为下一次迭代做准备。

    【讨论】:

    • 我如何获得 name 的值?
    • parser:foundCharacters: 至少会被调用一次,也许会被调用多次。您累积字符直到到达当前元素的末尾,在本例中为name。您可能会发现使用像 TBXML 这样专为此类解析而设计的第三方库会更容易。
    • 所以我会用一个全局变量作为flag,当elementName=name时读取所有字符?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 2012-02-29
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多