XML elements by attributes

  • So I have gone through the docs on NSXMLDocument, Node, and Element.
    And I have some code that has been working for a while but is
    completely based on index numbers parse through it. Here is a very
    basic sample of what I am trying to do.

    <root>
    <child name="foo">
      <tag>something</tag>
    </child>
    <child name="bar">
      <tag>something else</tag>
    </child>
    </root>

    What I want to do is grab the child node with the
    attributeWithName@"region" stringValue:@"bar"

    There just does not seem to be a method to do this that I can figure out.
  • Assuming xml is your NSXMLDocument instance:

    [xml nodesForXPath:@"//*[@region[.='bar']]" error:&error];

    The XPath expression may not be perfect, but you get the idea. This
    method returns an array (NSArray) of NSXMLNode objects.

    On Feb 14, 2007, at 6:32 PM, <chris.lists...> wrote:

    > So I have gone through the docs on NSXMLDocument, Node, and
    > Element. And I have some code that has been working for a while but
    > is completely based on index numbers parse through it. Here is a
    > very basic sample of what I am trying to do.
    >
    > <root>
    > <child name="foo">
    > <tag>something</tag>
    > </child>
    > <child name="bar">
    > <tag>something else</tag>
    > </child>
    > </root>
    >
    >
    > What I want to do is grab the child node with the
    > attributeWithName@"region" stringValue:@"bar"
    >
    > There just does not seem to be a method to do this that I can
    > figure out.