NSXMLParser с несколькими атрибутами - PullRequest
0 голосов
/ 29 апреля 2010

У меня есть следующий XML (приложение для iPhone):

<Row>
<Field name="employee_id_disp">00070431</Field>
<Field name="given_name">John</Field>
<Field name="family_name">Doe</Field>
</Row> ...

Как получить значения только для одного из атрибутов, например, значение "Джон" для атрибута name = "данное_имя"?

Спасибо за ответы.

Ответы [ 2 ]

4 голосов
/ 29 апреля 2010

Предположительно, вы будете использовать NSXMLParser для анализа этого.

Это означает, что в вашем didStartElement: обратном вызове делегата вы должны проверить переданный attributes словарь, чтобы увидеть, имеет ли он ключ "name" со значением "Given_name". Если это произойдет, вы захотите установить флажок, чтобы начать запись символов, найденных в обратном вызове foundCharacters:. Как только вы достигнете обратного вызова didEndElement: для элемента «Поле», вы объедините все символы в строку, и эта строка будет именем. (Скорее всего, все персонажи будут сообщены в одном обратном вызове на foundCharacters:, но это не гарантировано).

0 голосов
/ 29 апреля 2010

Самый простой способ: использовать процессор XPath и вычислить выражение:

"/Row/Field[@name='given_name']/text()"

Он должен вернуть "Джон" в результате. Вы можете попробовать это в этом симуляторе здесь: http://www.mizar.dk/XPath/

Вот простой способ получить доступ к XPath, который поставляется с libxml2: http://cocoawithlove.com/2008/10/using-libxml2-for-parsing-and-xpath.html

И хороший ресурс для поиска, какие XML-парсеры поддерживают XPath: http://www.raywenderlich.com/553/how-to-chose-the-best-xml-parser-for-your-iphone-project

...