2017-07-06 47 views
-2

我遇到了一個問題,我的項目中XML節點的值在IE11中以undefined的形式返回,而它們作爲所有其他瀏覽器(包括Edge)中的預期有效值返回。應該使用什麼方法在JavaScript中讀取XML數據?

爲了獲得我使用的值.innerHTML,經過一番研究,我發現.innerHTML在IE11中不起作用,在技術上它不應該用於首先讀取XML節點值。

我發現一些解決方案對我來說似乎都很不方便,因爲他們建議使用不同的方法來讀取不同瀏覽器(又名IE11和其他)的XML數據。我認爲必須有一種標準的方式來讀取可在所有瀏覽器中工作的XML數據,因爲解析XML是非常常見的,而不是一種在不同瀏覽器中會有不同實現的模糊做法。

我終於找到了一個視頻,其中一個傢伙用.firstChild.data解釋了讀取XML節點值。我已經在我的項目中實現了它,並且它在所有瀏覽器中都能正常工作。這是我遇到這種方法的唯一時間。我看到建議使用.text(),.innerHTML.textContent(對於IE11)。

.firstChild.data是不是應該使用或不應該使用的,是否有其他方法是跨瀏覽器兼容的?

+2

向我們展示您在 – charlietfl

+1

存在問題的代碼請修改您的問題以包含您迄今爲止編寫的代碼和一些示例數據。 –

+0

我實際上並沒有遇到任何代碼問題,正如我在寫道「我已經在我的項目中實現它並且它在所有瀏覽器中工作正常」的正文中所述。 –

回答

1

如果firstChildtext node,那麼您希望使用nodeValue來訪問其文本內容。另請參見textContent屬性。

但是,根據您的數據,firstChild可能不是文本節點。例如,假設這個XML文檔...

<root><a><b>foo</b> bar</a></root> 

...的<a>元素的firstChildElement與文本子節點。所以你不想用firstChild找到文本節點。

另外,data特定於CharacterData接口。如果你確定你有一個Text節點,那麼你可以使用這個屬性。否則,我會親自使用Node本身的接口,直到你知道你有什麼類型的節點。

相關問題