简短背景:我一直在尝试创建一个以XML Feed为源的新闻稿内容生成器。为了使它工作,我必须准备每个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>
答案 0 :(得分:4)
我很惊讶其他浏览器不抱怨,因为通常你不能简单地将属于一个文档(你的XML)的节点附加到另一个文档(你的HTML文档) - 你应该只能附加节点进入具有相同ownerDocument的节点。
首先尝试使用importNode将XML节点导入HTML文档的“范围”。