代码之家  ›  专栏  ›  技术社区  ›  James Skidmore

无法使用TouchXML获取名称中带有冒号的XML元素

  •  1
  • James Skidmore  · 技术社区  · 15 年前

    我有以下代码:

    NSString *subtitle = [[[node elementsForName:@"subtitle"] objectAtIndex:0] stringValue];
    NSString *duration = [[[node elementsForName:@"itunes:duration"] objectAtIndex:0] stringValue];
    

    第一行工作得很好。但第二行行不通。我想这与名称空间有关,但我对这一切都很陌生,所以我希望能得到任何指导。谢谢您!


    elementsForLocalName:URI: 正确读取元素。现在的问题是,由于我使用的是TouchXML库,所以该方法似乎没有映射到 CXMLElement 结构(见 here

    所以现在的问题是:如何转换 CXM元素 到一个 NSXMLElement 所以我可以用那种方法?

    1 回复  |  直到 9 年前
        1
  •  2
  •   James Skidmore    15 年前

    “itunes”是名称空间标识符。它本身实际上没有任何意义,它只是将URI与所讨论的元素链接起来。看起来您使用的是itunesrss扩展,它位于名称空间下 http://www.itunes.com/dtds/podcast-1.0.dtd .

    因此,对于命名空间元素,我认为(我不熟悉Objective-C或NSXML:P)您希望使用 elementsForLocalName 取而代之的是:

    [node elementsForLocalName: @"duration" URI: @"http://www.itunes.com/dtds/podcast-1.0.dtd"]
    

    关于第二个问题的答案,见下面的评论。