2012-12-22 85 views
1

數據之間是否有內容差異?XML文檔和XML字符串有什麼區別?

也許一個文檔可能有額外的元數據,如作者,上次編輯日期等。

我想了解爲什麼w3學校的domparser示例有兩種完全不同的方法來加載xml字符串與xml文檔。

例如,說這兩個來源包含<book><page1>Hello World!</page1></book>

首先方法提供負載使用的XMLHttpRequest()和responseXML的JS的對象xmlDoc中,第二個使用的DOMParser()和parseFromString()

將如何由每個方法創建的JS對象彼此不同?

+0

http://w3fools.com/ – Philipp

+1

是的,@Philipp,我對他們的一些內容存在一些問題(並且足夠聰明以研究他們的證書是昂貴的紙張),但是我仍然發現它很有用和信息。你能推薦一個更好的選擇嗎? – Medicdude

+0

@Medicdude https://developer.mozilla.org – PeeHaa

回答

1

兩種方式的結果都是表示xml結構的對象。

第一種方法是使用XMLHttpRequest從遠程位置加載(並解析)xml文檔。

第二種方法假定您的腳本中已經有了xml內容(存儲在一個變量中,並不重要)。然後XML字符串的內容會被解析成一個對象,所以你可以很容易地執行對XML數據操作(這是不可能的字符串)

您可以用生成的XML對象是這樣工作的:

var p = new DOMParser() 
xmldoc = p.parseFromString('<book><page1>Hello World!</page1></book>', 'text/xml') 

xmldoc.childNodes.item(0) // the <book> tag 
xmldoc.childNodes.item(0).childNodes.item(0) // the <page1> tag 
xmldoc.childNodes.item(0).childNodes.item(0).textContent // "Hello World!" 
+0

好吧,假設兩個源都有相同的xml內容(比如 Hello World),那麼每種方法創建的js對象會是相同的嗎? – Medicdude

+0

結果應該是一樣的。第一種方法:'請求將xml作爲文本數據返回 - >解析xml - >返回xml文檔。第二種方式是返回包含xml內容的字符串變量 - >解析xml - > xml文檔。 – micha

+0

好吧,所以xml文檔只是一個javascript對象,我可以通過遍歷?所以,如果我想獲得文本,我可以去xmlDoc.book.page1.getText()? – Medicdude

0

第一個示例從XML文件構建XML樹,但仍然需要加載。它使用XMLHttpRequest,它從Web服務器加載XML文件並自動分析它以創建XML文檔。

第二個示例使用已包含XML代碼的字符串構建XML樹。

+0

當你說'構建一個XML樹'時,這意味着什麼。它會創建一個類似於xml文檔的JavaScript對象嗎? – Medicdude

相關問題