从XML获取布尔变量(不是字符串)

时间:2012-02-09 23:43:27

标签: javascript jquery xml

是否可以使用Javascript(或jQuery使示例更容易)从XML中的某个字段获取布尔变量? 如果是这样 - 它应该如何用XML编写,以及应该在客户端进行哪些操作?

请检查以下代码:

$(document).ready(function(){
    var data = "<?xml version='1.0' encoding='utf-8' ?><data><event id='2'><text><![CDATA[Hello there]]></text><bool1>true</bool1><bool2>false</bool2></event></data>";
    var xmlDoc = $.parseXML(data);
    var $xml = $(xmlDoc);
    var bool = data.find("bool1").text(); // "true" - string
});

我想要的是获取'test'字段的字符串和'bool1'/'bool2'的布尔值。

谢谢。

更新:因此,要么必须设置XML方案,要么直接进行直接比较(==='false'/ ==='true')并将其转换为布尔值。

3 个答案:

答案 0 :(得分:2)

将读入的文本与字符串“true”进行比较,并将该比较的结果分配给您的变量。

var b = data.find("bool1").text() === 'true';

如果文本节点中有额外的空格,您可以使用jQuery修剪文本中的读取:

var b = $.trim(data.find("bool1").text()) === 'true';

如果节点保持文本“true”(带有一些可能的周围空格),则变量将接收布尔值true。如果节点保持除字符串“true”以外的任何值,则变量将接收布尔值false

答案 1 :(得分:1)

在jQuery中,您可以将XML字符串包装在jQuery对象中以解析它:

$(document).ready(function(){
    var $data = $("<?xml version='1.0' encoding='utf-8' ?><data><event id='2'><text><![CDATA[Hello there]]></text><bool1>true</bool1><bool2>false</bool2></event></data>");
    var bool = $data.find("bool1").text(); // "true" - string
});

然后要强制变量为布尔值,您可以使用如下条件语句设置它的值:

var bool = ($data.find("bool1").text() == 'false') ? false : true;

答案 2 :(得分:1)

您可以将文本转换为布尔值,简单如下: var bool = Boolean($ xml.find('bool1')。text());

编辑:这总是返回true。你确实需要测试为String。

要在xml中区分字符串和布尔值,可以添加type属性:

<bool1 type='xs:boolean'>false</bool1>

$xml.find('bool1').attr('type') //returns xs:boolean