2014-09-30 1 views
0

Рассмотрим следующий XML:Не разбирать конкретные теги с помощью NSXMLParser

<root> 
    <bar> 
     <p>Hello <italic>World</italic></p> 
    </bar> 
    <banjo><p>Hello <italic>World</italic></p></banjo> 
</root> 

настоящее время я использую https://github.com/nicklockwood/XMLDictionary для анализа данных XML. Я хотел бы игнорировать теги <p> и <italic>. Как я могу это достичь?

NSDictionary должен как-то выглядеть эта структура:

-root 
--bar 
---<p>Hello <italic>World</italic></p> 
--banjo 
---<p>Hello <italic>World</italic></p> 

ответ

0

Так быстрый взгляд на тот XMLDictionary класс, кажется, показывает, что он просто оборачивает стандартный NSXMLParser и создает удобный объект словаря с все из XML-элементы.

Если вы привержены этому GitHub код, то вы могли бы потенциально идти через результирующей словарь после разбора XML и реструктурировать <p> и <italic> элементы обратно в родительский элемент. Но это довольно неэффективно и определенно не рекомендуется, если у вас очень короткий XML, и преимущество класса XMLDictionary гарантирует дополнительную работу.

Вы можете также копаться в XMLDictionary кода, в частности parser:didStartElement и parser:didEndElement методы, и внести некоторые изменения, чтобы игнорировать <p> и <italic> тегов. Это должно эффективно сгладить структуру к чему-то близкому к вашему примеру.

Но, если вы подумываете о том, чтобы задуматься, в этом коде, вы можете просто использовать NSXMLParser напрямую, игнорируя эти теги одинаково. Это даст вам более жесткий контроль над синтаксическим разбором и может уменьшить ненужное создание объектов, особенно если ваш XML имеет значительный размер. Просто прочитайте на NSXMLParserDelegate и даже пройдите через код XMLDictionary, чтобы увидеть, как он делает то, что вам нравится.