4

简短背景:我一直在尝试创建一个以 XML 提要为源的时事通讯内容生成器。为了使它工作,我必须准备每个 XML 节点元素以适合我的时事通讯布局。

我使用这种方法将 2 个相邻的 xml 元素合并到单个组节点中:

element_getter: function(xml) {

var deals = $(xml).find('campaign:eq(0) deal');

    deals = $.map(deals, function(val, index){

        if (index % 2 == 1) return;


        var group = $(document.createElement('group'));

        $(group).append(deals[index]);

            if (deals[index+1]) 
                $(group).append(deals[index+1]);        

            return group;
        });

        return deals;
    }

问题出现在 IE 上。当我尝试在文档中创建新节点或将任何内容附加到其中时,我得到 SCRIPT5022: WrongDocumentError(FF 或 Chrome 不会发生这种情况)我已经尝试以不同的方式附加此元素(如 $.parseXML) ,但它并不能解决问题。

有任何想法吗?

这是 XML 源代码的示例:

<ebi-cmp-list version="1">
<campaign id="2">
    <title>Campaign</title>
    <startTime ts="201309090600">2013-09-09 06:00</startTime>
    <endTime ts="201309102359">2013-09-10 23:59</endTime>
    <type id="2">spec_offer</type>
    <deals>
        <deal id="15814">
            <event id="15814">Test Event</event>
            <venue id="429">Arena</venue>
            <city id="20">Berlin</city>
            <category id="73">Shows</category>
            <time ts="201310122000">2013-10-12 20:00</time>
            <price>
                <oldPrice currency="EUR">113.00</oldPrice>
                <newPrice currency="EUR">113.00</newPrice>
            </price>
            <ticketsLeft>26</ticketsLeft>
            <link rel="img">http://www.example.com</link>
            <link rel="event">http://www.example.com</link>
        </deal>
        <deal id="15814">
            <event id="15814">Test Event</event>
            <venue id="429">Arena</venue>
            <city id="20">Berlin</city>
            <category id="73">Shows</category>
            <time ts="201310122000">2013-10-12 20:00</time>
            <price>
                <oldPrice currency="EUR">113.00</oldPrice>
                <newPrice currency="EUR">113.00</newPrice>
            </price>
            <ticketsLeft>26</ticketsLeft>
            <link rel="img">http://www.example.com</link>
            <link rel="event">http://www.example.com</link>
        </deal>
    </deals>
</campaign>

4

1 回答 1

4

我很惊讶其他浏览器没有抱怨,因为通常您不能简单地将属于一个文档(您的 XML)的节点附加到另一个文档(您的 HTML 文档)——您应该只能将节点附加到节点中具有相同的所有者文档。

尝试首先使用importNode将 XML 节点导入 HTML 文档的“范围” 。

于 2013-09-27T08:10:50.353 回答