2017-05-09 28 views
1

我正在嘗試使用JQuery來使用$(xml)$.parseHTML(xml)來分析一個名爲<source>的元素的簡單XML片段。使用空的<source />標記錯誤地解析生成的對象,並將源標記內容作爲文本節點兄弟進行解析。例如,對於var xml設置爲這個XML片段:JQuery.parseHTML()是否正確處理<source>元素名稱?

<root> 
    <name>Some name</name> 
    <source>Some source</source> 
</root> 

調用console.log($(xml)[0])結果:

<root> 
    <name>Some name</name> 
    <source /> 
    "Some source" 
</root> 

注意空</source>標籤和文字作爲同級。

但是,當元素名稱更改爲sourced時,它工作正常。或者如果我使用$.parseXML(xml),則DOM包含正確的<source>Some source</source>內容。

這是JSBin as an example

這是一個JQuery錯誤,或者我在這裏做錯了什麼?

回答

0

根據MDN, <source>是一個空的HTML元素,如<img><input>。你不能用它來包圍文字,也沒有</source>標籤(所以這個無效標籤被忽略)。它用來指定資源的位置爲<picture><audio>,或<video>包含它,在這個例子中的元素:

<video controls> 
    <source src="foo.webm" type="video/webm"> 
    <source src="foo.ogg" type="video/ogg"> 
    <source src="foo.mov" type="video/quicktime"> 
    I'm sorry; your browser doesn't support HTML5 video. 
</video> 

$.parseHTML()解析它像瀏覽器那樣(事實上,它通常只使用瀏覽器的自己的HTML解析功能)。

由於您的數據是XML,而不是HTML,因此應該使用$.parseXML()代替。

+0

感謝@Barmar - 現在非常有意義。我將切換到'$ .parseXML()'我們的XML內容。 – csjx

相關問題