使用JavaScript删除XML名称空间的简单方法?
例如,有没有一种简单的方法可以删除一个XML名称空间,但保持标记与jQuery或JavaScript相同?例如:使用JavaScript删除XML名称空间的简单方法?,javascript,jquery,html,namespaces,xml-namespaces,Javascript,Jquery,Html,Namespaces,Xml Namespaces,例如,有没有一种简单的方法可以删除一个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> 在运行
<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时,不知道其中的元素和/或属性?这并不是一个真正的答案,但最好还是在服务器端处理这个问题。对于这种任务来说,JavaScript出现有点太晚了。。。事件可能已经附加到现有节点,并且您将处理每个元素两次 名称空间的用途是什么 如果这些是静态html文件,并且名称空间没有任何用途,我将使用正则表达式剥离所有名称空间
如果它们不是静态的,并且名称空间作为xml使用时有其用途,那么您可以进行一些服务器端检测,以使用正确的doctype和名称空间(如果合适)。当您知道如何。。。只需使用\\来转义冒号,这样jquery解析引擎就不会将其解析为动作分隔符
$('html\\:a').each( function(){
var temp = $(this).html();
$(this).replaceWith("<a>"+temp+"</a>");
});
注意,我是那些只在FF中真正测试东西的可怕的人之一…如果要替换的代码中没有
标记,您可以尝试():
container.innerHTML = container.innerHTML
.replace(/<(\/?)([^:>\s]*:)?([^>]+)>/g, "<$1$3>")
container.innerHTML=container.innerHTML
.replace(/\s]*:)?([^>]+)>/g,”)
说得清楚,我认为这是在作为text/html服务之后,因此被解析为html而不是XHTML,这是正确的吗。在这种情况下,这不是关于XML或名称空间的问题,而是关于将元素从一个节点名称转换为另一个节点名称的问题,方法是删除前面名称中的字符并包括冒号?是的。该文件是以HTML形式提供的,而不是XHTML(它的DOCTYPE为),从技术上讲,它不是XML名称空间,但我认为可能有一种方法可以将HTML解析为XML以去除XML名称空间,这是因为$('HTML:a')或带有HTML:a的getElementByTagName返回无法识别的表达式。谢谢,但最重要的是,我希望它做到这一点,但也添加了参数也…?对于这个特定的项目,我不能做它的服务器端不幸的。太棒了,你摇滚,这正是我需要的!对于我来说,这个XML
失败了,它看起来像是http:混淆了它,并返回以下内容:
container.innerHTML = container.innerHTML
.replace(/<(\/?)([^:>\s]*:)?([^>]+)>/g, "<$1$3>")