1. Welcome to the new MacRumors forums. See our announcement and read our FAQ

XML attributes and reading what they are

Discussion in 'Mac Programming' started by Chirone, Jul 29, 2009.

  1. macrumors 6502

    #1
    ok, this is going to sound really stupid...

    i can add an attribute to a node easily enough and append it to another node

    Code:
    NSXMLNode* attr = [[NSXMLNode alloc] initWithKind: NSXMLAttributeKind];
    [attr setName: @"testAttr"];
    [attr setStringValue: @"testVal"];
    [root addChild: [NSXMLNode elementWithName: @"testNode" children: nil attributes: [NSArray arrayWithObject: attr]]];
    
    easy, and it appears as i'd expect

    now... how do i read that value back (specifically from a file, not when i just created it)?
    I saw that you can get/set attribute values for an NSXMLElement which is a subclass of NSXMLNode

    so how do i get the attributes of an NSXMLNode?

    eeeh, nevermind, i missed the part where NSXMLDocument returns an NSXMLElement when you call rootNode

    oh wait, that's right... NodesForXPath returns an NSArray of NSXMLNode

    is it possible to get the attribute name and value from an NSXMLNode?


    pfff, i knew this was a stupid question! just needed a few minutes to experiment more

    found me what i was after
    Code:
    NSXMLNode* rootTwo = [xmlDoc rootElement];
    NSArray* pathNodes = [rootTwo nodesForXPath:@"/singQToRenderQ/testNode" error: nil];
    NSXMLElement* elementNode = [pathNodes objectAtIndex: 0];
    NSArray* attributesFromElement = [elementNode attributes];
    NSXMLNode* theAttributeNode = [elementNode attributeForName: @"testAttr"];
    
     

Share This Page