2012-10-03 66 views
0

我试图将一段xml存储到javascript中的字符串变量中,并在IE8中一直抛出一个错误。 FireFox并没有显示错误,但当然在IE8中却有。 Swingching浏览器不是一种选择,所以我必须尝试解决这个问题。如何在JavaScript中将xml存储为字符串变量?

该函数的目的是检查列表中的项是否存在于xml对象中。所以如果有更好的方法来做这个检查,我也会接受。我们从中拉出的系统具有将xml转换为字符串的功能。最下面是检索结果的输出。这是功能。

function commodityExists(newCommodityCode){ 
     var comExists = new Boolean(0); 
     newCommodityCode = ">" + newCommodityCode + "<" 
     var strXML = 'tw.local.aribaHeader.commodities.toXMLString()'; //ERROR HERE 
     strXML = strXML.toString(); 
     if(strXML.indexOf(newCommodityCode,0)>0){    
      comExists=true;    
     } 
     return comExists; 
    }; 

这里是strXML.toString()的输出;但正如你所看到的,它本质上是xml。

 var strXML = ‘<variable type="NameValuePair[]"> 
         <item type="NameValuePair"> 
         <name type="String"><![CDATA[No Data Found]]></name> 
         <value type="String"><![CDATA[95990070]]></value> 
         </item> 
         </variable>’; 
+0

什么是错误? –

+0

另外,我不会使用'new Boolean(0)'作为'false'。 'if(new Boolean(0))console.log('a');'会记录'a'。换句话说,包装'false'的'Boolean'对象是* truthy *。 –

+0

此外,此代码还存在其他有关问题。它几乎看起来像面试问题或家庭作业问题。 “下面的代码有多少错误?”不意味着冒犯,但正如其他人已经提到你指定的行*不能*抛出错误。 –

回答

0

你正在创建一个字符串:

var strXML = 'tw.local.aribaHeader.commodities.toXMLString()'; //ERROR HERE 
      ^---           ^--- 

然后转换该字符串......一个字符串?

strXML = strXML.toString(); 

会在哪里这tw对象来定义你似乎在尝试使用?因为现在你的代码已经写好了,所以你不要在这个tw对象中调用一个.toXMLString()方法。您只是将对象调用的文本文本分配为字符串本身。

+0

可以认为整个线一大块的XML代码的.... <变量类型= “的NameValuePair []”> <项类型= “的NameValuePair”> <名称类型= “字符串”><![CDATA [无资料找到]]> <值类型= “字符串”><![CDATA [95990070]]> – silvster27

+0

然后我需要一个字符串,所以我可以使用indexOf函数,以便为为什么我使用strXML.toString()我得到的错误是“未终止的字符串常量”......这导致我相信将xml存储到strXML变量中时出现错误。 – silvster27

+0

刚刚发现这... http://stackoverflow.com/questions/5125506/storing-html-or-xml-code-in-javascript-variables所以我要关闭这个问题。 – silvster27

2

我不知道你怎么想的代码是干什么的,这里是做什么的解释:

> function commodityExists(newCommodityCode){ 
>  var comExists = new Boolean(0); 

你真的想要一个Boolean对象?这个函数可能会返回一个布尔对象或原语,这取决于稍后发生的事情考虑:

 var comExists = false; 

>  newCommodityCode = ">" + newCommodityCode + "<" 

这将覆盖任何值传递给newCommodityCode从通话。

>  var strXML = 'tw.local.aribaHeader.commodities.toXMLString()'; //ERROR HERE 

我看不出如何引发错误,这是一个简单的字符串赋值。

>  strXML = strXML.toString(); 

那用途不同不执行任何操作 - 它调用一个字符串,将刚刚返回相同的字符串的的toString方法

>  if(strXML.indexOf(newCommodityCode,0)>0){    

该测试将始终是假的,因为nweCommodityCode的值在函数是硬编码和在strXML的(硬编码)值不存在。

>   comExists = true;    
>  } 
>  return comExists; }; 

该函数将始终返回false(尽管原始值将返回值为false的布尔对象)。

+0

toXMLString只是将返回XML对象的WLE语法的一部分,但它显然不是实际的字符串。这是一个xmlobject。经过这里的讨论后,它真的在我看来像我的方法不会工作,所以我会回到这个绘图板。我会解决这个问题。再次感谢你们的反馈。我担心这可能是这种情况......我只是希望有一些我不知道的惊人物品。多谢你们! – silvster27

0

的方法,我试图采取不会起作用,因为我动态填充XML,所以没有办法,我逃脱字符(也有可能是莫名其妙,但显然这是不值得的)。 Storing HTML or XML code in javascript variables

相反,我正在将比较移到服务器端,而不是检索xml并在客户端比较,并通过ajax发回结果,除非有人有更好的建议。

相关问题