#objective-c #ios #xhtml #libxml2
#objective-c #iOS #xhtml #libxml2
Вопрос:
У меня есть несколько примеров данных XHTML, например, это:
<html>
<head>
<style type="text/css">
..snip
</style>
<script type="text/javascript" src="http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.js"></script>
</head>
<body>
<div id="contentA">
This is sample content <b> that is bolded as well </b>
</div>
</body>
</html>
Теперь, что мне нужно сделать, это с помощью xmlNode *
получить внутренний HTML-код div contentA
. У меня есть xmlNode *
для этого, но как я могу получить для этого InnerXml? Я просмотрел содержимое, но оно возвращает только This is sample content
, а не xml в тегах, выделенных жирным шрифтом. Я изучил jQuery
это, но из-за ограничений Apple и JavaScript я не могу использовать jQuery для получения InnerXml этого узла.
С другой стороны, есть ли другая библиотека, которую я должен использовать для получения внутреннего XML? Я заглянул в TBXML, но там была та же проблема.
Ответ №1:
Содержимое узла div не является отдельной текстовой строкой. Вероятно, он состоит из:
- Текстовый узел, содержащий
This is sample content
(с предыдущей новой строкой). - элемент node с именем тега
b
- Текстовый узел, содержащий завершающую новую строку и отступ до закрывающего тега
div
.
Узел элемента для <b>...</b>
будет иметь текстовое содержимое that is bolded as well
.
Чтобы получить весь текст в div в виде одной строки, вам нужно рекурсивно спуститься по всему дереву дочерних узлов в поисках текстового содержимого.
Комментарии:
1. По сути, мне нужна строка:
This is sample content <b> that is bolded as well </b>
вот и все, больше ничего не требуется. Как я могу получить эту строку.2. Вам все еще нужно выполнить итерацию по узлам. Когда вы дойдете до
<b>
элемента, вставьте текст «<b>» в строку, а когда вы закончите с этим элементом, вставьте «</b>» в строку.3. У меня такое чувство, что мог бы быть более простой способ сделать это, потому что при таком подходе необходимо поддерживать порядок свойств, таких тегов, как этот: <tag> Этот имеет <b> прерывистое</b> выделение жирным шрифтом </tag>. В принципе, все, что мне нужно, это диапазон XML-div. Как я могу это получить?
4. @Ричард Дж. Росс III:
<b>...</b>
это XML-элемент, и все. Нет способа заставить анализатор XML волшебным образом игнорировать части структуры XML.5. @JeremyP : вы правы! Я был УВЕРЕН, что это не разрешено в XML. Ты научил меня чему-то важному! спасибо. Я удалил свой бесполезный и неправильный ответ.