2011-12-12 40 views
0

時從Opera中刪除XML聲明當我序列化一個xml文檔時,它將返回字符串並添加XML聲明。在Firefox和Chrome中這不會發生,我希望Opera能夠返回與Firefox和Chrome相同的結果。如何在Opera中使用XMLSerializer

http://jsfiddle.net/superbDeveloper/Qst5e/9/(下面JavaScript代碼)

JavaScript代碼

//test xml serializer 
var s = new XMLSerializer(); 
var d = document; 
var str = s.serializeToString(d); 
console.log("1) serializeToString "); 
console.log(str); 

結果在Firefox在Opera

1) serializeToString 
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"><head> <meta content="text/html; charset=UTF-8" http-equiv="content-type" /> <title> - jsFiddle demo by superbDeveloper</title> <script src="/js/lib/mootools-core-1.4.2-full-nocompat.js" type="text/javascript"></script> <link href="/css/normalize.css" type="text/css" rel="stylesheet" /> <link href="/css/result-light.css" type="text/css" rel="stylesheet" /> <style type="text/css"> </style>..... 

結果

1) serializeToString 
<?xml version="1.0"?><html><head> 
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"/> 
    <title> - jsFiddle demo</title> 

    <script type="text/javascript" src="/js/lib/mootools-core-1.4.2-full-nocompat.js"/> 

    <link rel="stylesheet" type="text/css" href="/css/normalize.css"/> 
    <link rel="stylesheet" type="text/css" href="/css/result-light.css"/> 

    <style type="text/css"> 

    </style>... 

注意XML聲明<?xml version="1.0"?>已被添加到Opera瀏覽器中。有沒有辦法阻止Opera添加XML聲明?或者如何刪除XML聲明?我想過使用substring,但它不是一個真正優雅的解決方案。

+0

使用子串方法http://jsfiddle.net/superbDeveloper/Qst5e/11/正常工作。不知道它是否是一個優雅的解決方案。 – zulucoda

回答

1

好了,在這一點上,你所擁有的是一個字符串,因此使用字符串的方法是優雅的,因爲它得到:)

我不知道任何其他方式來做到這一點。

+0

雅我必須說子字符串方法http://jsfiddle.net/superbDeveloper/Qst5e/11/很好,所以雅我會堅持下去。感謝澄清壽。 – zulucoda

0

此問題僅限於非IE瀏覽器。使用documentElement解決方案。

xmlData = jQuery(xmlData); 
var oSerializer = new XMLSerializer(); 

if (typeof xmlData[0].documentElement !== 'undefined') { 
    var xmlString = oSerializer.serializeToString(xmlData[0].documentElement); 
} else { 
    var xmlString = oSerializer.serializeToString(xmlData[0]); 
} 
相關問題