Какао - вставьте текст между тегами - PullRequest
0 голосов
/ 16 сентября 2010

Мне было интересно, как можно вставить текст между тегами HTML в Какао. Я отображаю исходный код в NSTextView - пример:

<html>
<head>
<title>test</title>
</head>
<body>hello!</body>
</html>

Приведенный выше код может различаться по размеру, но что мне делать, если я хочу вставить слово <link rel="apple-touch-icon" href="webclip.png" /> в любое место между тегами <head>?

Редактировать: Чтобы уточнить, я не смотрю на то, как вставить текст в NSTextView, а на то, как вставить текст между тегами заголовка, которые уже находятся в текстовом представлении. Я работаю над редактором HTML.

Спасибо! :)

Ответы [ 2 ]

1 голос
/ 18 сентября 2010

Не написав ранее HTML-редактор, я не совсем уверен, что для этого лучше.Однако вам, очевидно, понадобится какой-то способ парсинга HTML.Поскольку вы используете Какао, у вас есть несколько вариантов.

  • NSXMLParser Это анализатор, управляемый событиями в стиле SAX.Вы реализуете NSXMLParserDelegate, у которого есть методы, которые вызываются, когда синтаксический анализатор встречает различные компоненты XML (элементы, атрибуты, текст и т. Д.)
  • NSXML Это синтаксический анализатор XML на основе дереваи я не уверен, насколько хорошо он играет с HTML.Однако он имеет преимущество в том, что может выполнять запросы XPath, которые могут быть очень полезны при поиске определенного элемента.
  • libxml Это библиотека C, которая работаетна гораздо более низком уровне, чем какао.Тем не менее, он, безусловно, самый способный из трех.Он может работать как в управляемом событиями режиме, так и в древовидном режиме.Кроме того, он также имеет специфичные для HTML возможности.К сожалению, это не так удобно для использования.Вы обнаружите, что часто бросаете вещи между строками C и NSString.Тем не менее, я широко использовал libxml в приложении для iOS для анализа XML, и он прекрасно работает, когда вы привыкнете к интерфейсу в стиле C.Я уверен, что это работает так же хорошо на Mac OS X, тоже.Вероятно, это то, что я бы порекомендовал для вашей проблемы.
0 голосов
/ 16 сентября 2010

A текстовое представление владеет текстовым хранилищем , которое является разновидностью изменяемой атрибутной строки . Вы можете заменить пустой диапазон строкой, которую хотите вставить, чтобы вставить ее.

Конечно, вам нужно будет проанализировать HTML, чтобы определить , где , чтобы вставить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...