2012-02-09 122 views
0

是否有可能使用Javascript(或jQuery来简化示例)从XML中的某个字段获取布尔变量? 如果是这样 - 它应该如何用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 
}); 

我想在这里得到字符串“测试”字段,布尔为“BOOL1” /“BOOL2”。

谢谢。因此,人们必须建立XML方案或直接进行比较(==='false'/ ==='true')并将其转换为布尔值。

回答

2

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

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

在文本节点的多余的空格的情况下,你可以使用jQuery修剪读取文本:

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

如果节点保存文本“真”(有一些可能周边空格),那么变量将会收到布尔值true。如果节点保存除字符串“真”之外的任何值,则该变量将接收布尔值false

+0

这当然会工作,但寻找一个更强大的解决方案。在XML中使用'true'和布尔true也是完美的。 – 2012-02-09 23:53:57

+0

如果没有模式定义,XML没有布尔的概念,我不确定你希望这样做有多“强大”。 – JAAulde 2012-02-09 23:57:32

+0

所以基本上不可能让XML区分字符串'true'和布尔变量?因为如果我只是简单地使用上面的方法,那么所有的字段都会丢失'true'/'false'字符串,如果它们碰巧存在的话。 – 2012-02-10 00:00:13

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; 
+0

对于任何真值,使用双重砰砰声(!!)将导致bool“true”,包括字符串“false”。您在编辑中发布的链接证实了这一点,并显示将比较结果用于字符串“true”。 – JAAulde 2012-02-09 23:59:41

+0

@JAAulde感谢您的评论,非常真实。我想最优雅的解决方案是检查字符串值是否为“true”或“false”并相应地设置布尔值。 – Jasper 2012-02-10 00:02:41

+1

没问题。事实上,比较是需要的,并且由于比较结果是bool,所以可以直接将其分配到var中。 – JAAulde 2012-02-10 00:04:08

1

你可以把你的文字为boolean,简单的像: VAR BOOL =布尔($ xml.find( 'BOOL1')文本());

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

以XML字符串鲜明和布尔,你可以添加type属性:

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

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

不会传递给'Boolean'函数的任何字符串会产生一个真正的值吗? – JAAulde 2012-02-09 23:57:21

+0

@JAAulde没错,我的不好。 – 2012-02-10 00:01:36

相关问题