2012-02-09 37 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