HtmlAgilityPack Символ '' ', шестнадцатеричное значение 0x22, не может быть включен в имя

.net html html-agility-pack vb.net

Вопрос

Эта строка:

    Dim NewHTMLString As String = XDocument.Parse(htmldoc.DocumentNode.OuterHtml).ToString()

Выдает эту ошибку:

    The '"' character, hexadecimal value 0x22, cannot be included in a name.

Это строка в HTML, которая, по ее словам, неверна:

    if ( typeof JSON != 'object' || !JSON.stringify || !JSON.parse ) { document.write( "<scr" + "ipt type=\"text\/javascript\" src=\"http:\/\/blahblah"><\/script>\n" ); };

Принятый ответ

Это связано с тем, что XDocument предназначен для работы с XML, поэтому он не поддерживает произвольную строку Javascript. XDocument считает эту часть: <scr" , поскольку начало узла XML и символ двойной кавычки ( " ) в имени узла XML считаются недействительными.

Я использовал XDocument в ответе на ваш предыдущий вопрос, чтобы получить красиво отформатированный вывод XML в консоли, и я сделал это, потому что точно знаю, что мой HTML является совместимым с XML. В этом случае ваш HTML недействителен с точки зрения XML, и неясно, чего вы пытаетесь достичь, используя XDocument здесь. Если вам просто нужно проверить результат от модификации, который вы сделали до исходного HTML, вы можете напрямую распечатать htmldoc.DocumentNode.OuterHtml чтобы консоль или сохранить HTML в новый файл следующим образом:

htmldoc.Save("path_to_new_file.html")


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow