防止jQuery使用自定义XML更改自关闭标记

时间:2011-11-09 07:00:09

标签: javascript jquery html xml

我正在创建一个浏览器插件(bookmarklet),用于精确嵌入页面<textarea>元素中的大型XML文档。这是一种自定义XML语言,包含一些自动关闭标记(例如<custom-tag />)。我能够捕获XML文档,将其包装在jQuery对象变量(例如$(myXml))中,并轻松操作数据。但是,在我尝试将已处理的XML文档插回页面的<textarea>元素后,所有自动关闭标记都将更改为单独的开始和结束标记。以下是正在发生的事情的一个例子:

在:

<outer-tag>
    <SELF-CLOSING-TAG foo="bar" />
    <second-tag>
        <third-tag>Some Value</third-tag>
    </second-tag>
</outer-tag>

jQUERY MANIPULATION:

<outer-tag>
    <SELF-CLOSING-TAG foo="bar">
        <second-tag>
            <third-tag>Some Value</third-tag>
        </second-tag>
    </SELF-CLOSING-TAG>
</outer-tag>

有什么方法可以阻止jQuery(或只是JavaScript或浏览器?)将这些自动关闭标签转换为打开和关闭标签?后一种方法对我们正在使用的XML模式无效。如果没有办法,还有其他值得考虑的黑客吗?

更新: Drejc的想法指出了我正确的方向来解决这个问题。在他的意见之后,我得到了关于这个额外S.O. post的额外建议,这一起解决了这个问题。

2 个答案:

答案 0 :(得分:1)

你有没有检查过这种情况。插入新元素后或读出后。您可以尝试不使用自闭合元素,如下所示:

<outer-tag>
    <SELF-CLOSING-TAG foo="bar"></<SELF-CLOSING-TAG>
    <second-tag>
        <third-tag>Some Value</third-tag>
    </second-tag>
</outer-tag>

这可能会有所帮助。

答案 1 :(得分:0)

这种“感觉”是XSD定义的结果,需要您的自动关闭标签环绕“第二标签”。看看吧。我也很怀疑如果您尝试使用其他浏览器,可能不会发生这种情况。