Есть ли у Classic ASP объект, который я могу использовать для просмотра и изменения элементов DOM на сервере? - PullRequest
0 голосов
/ 17 марта 2011

Я работаю в классическом приложении asp, которое требует функциональности, которая будет изменять код, который пользователь копирует и вставляет в форму. Пользователь считается доверенным пользователем, который не знаком с html.

Я пытаюсь сделать так, чтобы, если пользователь хочет изменить все атрибуты width="" в предоставленном коде, все, что ему нужно сделать, это заполнить текстовое поле Width с правильным значением и нажать «Сохранить / отправить». Затем скрипт найдет все атрибуты ширины и обновит их значения в предоставленном фрагменте HTML.

Я работал над регулярным выражением, чтобы сделать это, но во время исследования я прочитал, что многие люди не рекомендуют регулярные выражения для такого типа вещей, и предпочли бы использовать какой-либо объект парсера html.

Существует ли html-парсер или DOM-браузер / редактор, доступный в классическом asp, или мне просто нужно продолжить разработку регулярных выражений?

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

function replaceBetween(sSource, sStart, sStop, sValue)

    thisNewValue = sStart & sValue & sStop

    set re = new regexp
    re.pattern = "(" & "" &sStart & ")(.*?)(" & sStop & ")"
    re.IgnoreCase = true

    response.write "Pattern: <b>" & re.pattern & "</b><br />" & vbnewline
    response.write "thisNewValue: <b>" & thisNewValue & "</b><br />" & vbnewline
    response.write "match: <b>" & re.test(sSource) & "</b><br />" & vbnewline

    replaceBetween = re.replace(sSource, thisNewValue)


end function

sourceText = ("<div class='thisclass' id=""thisID""><a anotherthing="""" attribute=""one""><a attribute=""2""><a anotherattribute="" attribute=""three 3""></div>")
replacestart = "attribute="""
replacestop = """"
newvalue = "XXXX"

response.write "updated source: <b>" & server.HTMLEncode(replaceBetween(sourceText,replacestart,replacestop,newvalue)) & "</b><br />" & vbnewline

1 Ответ

0 голосов
/ 17 марта 2011

Ваш HTML хорошо сформирован? Если это так, вы можете просто использовать XML DomDocument. Используйте XPath, чтобы найти атрибуты, которые вы хотите заменить.

Вы также можете использовать серверную часть JScript в ASP, что может дать вам доступ к библиотекам HTMLDom, которые вы можете использовать.

...