2013-10-25 48 views
1

我想序列DOM在Javascript中,並期望得到一個良好的XML文檔,但是meta標籤未關閉:如何在Javascript中獲取DOM文檔的格式良好的XML?

<html> 
    <head> 
    <meta name="keywords" content="test"> 
    </head> 
    <body> 
    <p>test 
    <pre id='x'/> 
    </body> 
    <script> 
    document.getElementById('x').appendChild(
     document.createTextNode(new XMLSerializer().serializeToString(document)) 
    ); 
    </script> 
</html> 

輸出包含無效的XML,其中meta未關閉。然而p關閉:

<html> 
    <head> 
    <meta name="keywords" content="test"> 
    </head> 
    <body> 
    <p>test</p> 
    </body> 
</html> 

在Chrome 30.0和Phantomjs 1.9.2同樣的行爲。

我期待從XMLSerializer得到格式良好的XML輸出,即使我的HTML輸入已損壞。爲什麼這沒有發生,什麼是解決方法?我需要將DOM作爲文本轉換爲XML。

+2

所以,你要轉換的是沒有很好形成,一個是醫生?除非是xhtml,否則瀏覽器不能通過格式良好的規則進行播放。 –

+0

@MikeCheel我認爲他期望DOM是良構的,即使瀏覽器容忍格式錯誤的HTML。 – Barmar

+0

@Barnar就是這正是我所說的。除非它是xhtml,否則你將無法期待任何形式的正確(並且瀏覽器也會按照他們的喜好填充內容)。我認爲他將不得不做一些按摩來獲得他想要的東西。 –

回答

相關問題