如何在javascript中将xml存储为字符串变量?

时间:2012-10-03 04:42:03

标签: javascript xml string

我试图将一段xml存储到javascript中的字符串变量中,并且在IE8中它不断抛出错误。 FireFox没有显示错误,当然在IE8中也是如此。 Swictching浏览器不是一个选项,所以我必须尝试解决这个问题。

该函数的目的是检查列表中的项是否存在于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>’;

3 个答案:

答案 0 :(得分:2)

我不知道你认为代码在做什么,这里是对它的作用的解释:

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

你真的想要一个布尔对象吗?此函数可能会返回布尔对象或原语,具体取决于稍后发生的情况。考虑:

      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){            

该测试将始终为false,因为 nweCommodityCode 的值在函数中是硬编码的,并且不存在于 strXML 的(硬编码)值中。 / p>

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

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

答案 1 :(得分:0)

您正在创建一个字符串:

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

然后将该字符串转换为...字符串?

strXML = strXML.toString();

这个tw对象在哪里被定义为您似乎试图使用?因为现在编写代码时,您不会在此tw对象中的某些内容上调用.toXMLString()方法。您只是将对象调用的文字文本指定为字符串本身。

答案 2 :(得分:0)

我试图采取的方法不起作用,因为我动态填充xml,所以我无法逃脱角色(好吧可能有某种方式,但显然它不值得)。 Storing HTML or XML code in javascript variables

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