1

XML構造体には次のものがあります:

<font fontsize="10" fontcolor="#000000" fontface="file.ttf"/>

を使用してフォントサイズ、色、および顔を取得するにはどうすればよいNSXMLParserですか? もちろん、私は標準的な実装を持っています

-(id)init
{
    self = [super init];

    parser = [[NSXMLParser alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"myxmlfile" ofType:@"xml"]]];

    [parser setDelegate:self];
    [parser parse];

    return self;
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{
    NSLog(@"Started Element %@", elementName);
    element = [NSMutableString string];
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    NSLog(@"Found an element named: %@ with a value of: %@", elementName, element);
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    if (element == nil)
        element = [[NSMutableString alloc] init];
    [element appendString:string];
}

そして、それは美しく機能し<mytag>something</mytag>ます。タグ属性を取得するには?

4

3 に答える 3

5

あなたのattributeDictionary出身地

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 

それらが含まれています。[atrributeDict objectForKey:@"fontColor"]たとえば、電話するだけです

于 2012-04-06T13:04:55.570 に答える
2

NSXMLParserDelegate プロトコルには– parser:foundAttributeDeclarationWithName:forElement:type:defaultValue:、パーサーがデリゲートに各属性を伝えるために使用するメソッドがあります。そのメソッドをデリゲートに実装すると、属性が取得されます。

于 2012-04-06T13:13:43.183 に答える
1

xpathQuery を使用してください。XML 解析の最もシンプルで迅速なソリューションです。これで問題が解決します。リンクはこちらです。

http://cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html

ところで:「クエリ」部分では、ルート要素に「//」、たとえば内部階層に「//root//item」を付ける必要があります。

于 2012-04-06T12:46:24.193 に答える