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

Get boolean variable from XML (not string)

本文关键字:获取 布尔 变量 字符串 XML      更新时间:2023-09-26

是否可以使用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"/"ool2"获取布尔值。

谢谢。

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

将读入的文本与字符串"true"进行比较,并将比较结果分配到变量中。

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

如果文本节点中有额外的空白,可以使用jQuery来修剪读入的文本:

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

如果节点包含文本"true"(可能有一些周围的空白),那么该变量将接收true的布尔值。如果节点持有字符串"true"以外的ANY值,则变量将接收false的布尔值。

在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;

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

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

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

<bool1 type='xs:boolean'>false</bool1>
$xml.find('bool1').attr('type') //returns xs:boolean