Закрытие HTML-тегов

  • Автор темы Автор темы Rimen
  • Дата начала Дата начала

Rimen

Client
Регистрация
28.10.2019
Сообщения
411
Реакции
258
Баллы
63
Всем привет!
Задача простая: нужно проверять все ли html-теги закрыты в переменной, и если нет — закрывать их.
Полез за подсказкой к ChatGPT, он сказал что для реализации этой задачи можно использовать стандартную библиотеку .NET для обработки HTML - HtmlAgilityPack

Дальше предлагает такой код:


Саму конструкцию для c#-кубика в таком виде:
C#:
Развернуть Свернуть Копировать
string html = "<p>Some text <div>Some other text";
string resultHtml = CloseAllOpenTags(html);
Console.WriteLine(resultHtml); // Вывод: <p>Some text </p><div>Some other text</div>

Несколько вопросов:
1. как-то нужно устанавливать библиотеку HtmlAgilityPack? или её можно в using добавить и всё?
если нужно -- ткните пожалуйста как это делать (Visual Studio не пользуюсь совсем)

2. ChatGPT подсказал такой код:
C#:
Развернуть Свернуть Копировать
using HtmlAgilityPack;
public string CloseAllOpenTags(string html)
{
    var doc = new HtmlDocument();
    doc.LoadHtml(html);

    // Этот метод автоматически закрывает все открытые теги
    doc.OptionWriteEmptyNodes = true;

    return doc.DocumentNode.OuterHtml;
}
его во вкладку "Общий код" или "Директивы Using" ?
3. Возможно кто-то из вас знает другие, подходящие решения для зеннопостера ?
 
UPD:
1. скачал отсюда https://www.nuget.org/packages/HtmlAgilityPack/ .nupkg

2. из папки Net40 внутри htmlagilitypack.1.11.46.nupkg достал HtmlAgilityPack.dll и положил его в папку C:\Program Files\ZennoLab\RU\ZennoPoster Pro V7\7.7.3.0\Progs

3. в "Ссылки из GAС" добавил HtmlAgilityPack (из файлика в шаге 2) скрин

4. В "Общий код" добавил:

C#:
Развернуть Свернуть Копировать
using HtmlAgilityPack;

public class HtmlHelper
{
    public string CloseAllOpenTags(string html)
    {
        HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
        doc.LoadHtml(html);

        // Этот метод автоматически закрывает все открытые теги
        doc.OptionWriteEmptyNodes = true;

        return doc.DocumentNode.OuterHtml;
    }
}

скрин

сам кубик выглядит так:
C#:
Развернуть Свернуть Копировать
HtmlHelper htmlHelper = new HtmlHelper();
string html = "<p>Some text <div>Some other text";
string resultHtml = htmlHelper.CloseAllOpenTags(html);

Ошибку получаю такую:
[Общий код: Строка: 36; Cтолбец: 4] Не удалось загрузить файл или сборку "HtmlAgilityPack, Version=1.8.5.0, Culture=neutral, PublicKeyToken=bd319b19eaf3b43a" либо одну из их зависимостей. Найденное определение манифеста сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Вопрос: что не так?

проект прикрепил на всякий случай
 

Вложения

  • temp.zp
    temp.zp
    10,7 KB · Просмотры: 2
Последнее редактирование:
взял и затер системную dll зенки :bk:
ой...
1. это точно?
2. так нельзя делать? только из других папок добавлять .dll в "Ссылки из GAС"
3. как её теперь можно восстановить?

для меня эти ваши юзинги, сторонние библиотеки и внешние ссылки... брр
 
ну если dll не бэкапил, то зенку надо переустановить.
HtmlAgilityPack.dll уже есть в зенке. надо только в GAС добавить из C:\Program Files\ZennoLab\RU\ZennoPoster Pro V7\7.7.3.0\Progs , тогда конфликтов не будет с версиями.
 
а не... наврал с 3 короба... даже больше :bk:
перепутал с другой dll
C:\Program Files\ZennoLab\RU\ZennoPoster Pro V7\7.7.2.0\Progs\ExternalAssemblies сюда надо добавить HtmlAgilityPack.dll и потом отсюда в GAС и в юзинги
 
  • Оценить
Реакции: djaga
вот же есть тема https://zennolab.com/discussion/threads/kak-s-pomoschju-s-zakryt-vse-html-tegi.38358/
там вроде все нормально у всех получилось
Спасибо что ткнул. Оказывается я раньше бывал в этой ветке, но тогда не получилось, забил (не так надо было видимо).
Сейчас решил с другой стороны зайти и пошел в ChatGPT... а оказалось нужно было все-го то в старую ветку на форуме зайти.
в общем получилось. Пламенная благодарочка за помощь :bt:
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)