是否可以使用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')并将其转换为布尔值。
答案 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