Простой способ отбросить пространства имен XML с помощью JavaScript? - PullRequest
5 голосов
/ 14 сентября 2010

Есть ли простой способ, например, отбросить пространство имен XML, но оставить тег как есть в jQuery или JavaScript? Например:

<html:a href="#an-example" title="Go to the example">Just an Example</html:a>

И измените его на:

<a href="#an-example" title="Go to the example">Just an Example</a>

На лету с jQuery или JavaScript и без знания элементов и / или атрибутов внутри?

Ответы [ 3 ]

3 голосов
/ 10 октября 2010

Если в коде для замены нет тега <script>, вы можете попробовать ( demo ) :

container.innerHTML = container.innerHTML
                               .replace(/<(\/?)([^:>\s]*:)?([^>]+)>/g, "<$1$3>")
0 голосов
/ 25 сентября 2010

Легко, когда вы знаете, как ... просто используйте \\ для выхода из двоеточия, чтобы он не анализировался в качестве разделителя действий механизмом синтаксического анализа jquery.

$('html\\:a').each( function(){
  var temp = $(this).html();
  $(this).replaceWith("<a>"+temp+"</a>");
});

Это должно повторяться между каждымэлементы и заменить их обычными тегами.Так как они обслуживаются до функции обратного вызова ajax, в противном случае я не понимаю, почему вы хотите сделать это на лету ... тогда верхняя строка изменится на:

$.post('...',{}, function(dat){
    $(dat).find('html\\:a').each( blah blah ....
    .
    .
});

NBЯ один из тех ужасных людей, которые действительно проверяют вещи только в FF ...

0 голосов
/ 22 сентября 2010

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

Какова цель пространства имен?

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

Если они не статичны и у пространства имен есть цель, когда они служат какxml, вы можете выполнить некоторое обнаружение на стороне сервера, чтобы указать правильный тип документа и пространство имен (при необходимости).

...