2013-04-17 44 views
0

我試圖做出更改並使用HtmlAgilityPack保存文檔。但是如果一個文件包含php標籤,那麼在嘗試保存時就會變差。正則表達式不想使用,但有很多缺陷。有沒有優雅的解決方案?HtmlAgilityPack和php標籤

代碼:

var Doc = new HtmlAgilityPack.HtmlDocument(); 
Doc.DetectEncodingAndLoad("page.html"); 
............. 
string Result = Doc.DocumentNode.OuterHtml; 

來源:

<html> 
<?php echo "hello"; ?> 
</html> 

結果:

<html> 
<?php echo="" "hello";=""?> 
</html> 

在此先感謝。

+0

你爲什麼想要修改PHP源文件的HTML? – Dai

+0

我有php-includes的模板。 – user2058005

回答

1

今天它不被支持,但是如果你改變源代碼並重新編譯(畢竟這是開源的目的......),你可以修復它。去HtmlNode.cs,找到internal void WriteAttributes(TextWriter outText, bool closing)功能,並添加以下代碼片段:

internal void WriteAttributes(TextWriter outText, bool closing) 
{ 
    if (Name.StartsWith("?")) 
    { 
     int len = _outerlength - 3 - _namelength; 
     if (len > 0) 
     { 
      outText.Write(OwnerDocument.Text.Substring(_namestartindex + _namelength, len)); 
      return; 
     } 
    } 
    .... 
} 
+0

問題在於,htmlagilitypack將「<?php」理解爲一個未封閉的標籤,並且該決定仍然是一個多行腳本來破壞。 正則表達式 - 一個很好的解決方案,但如果一個php代碼包含「?>」(例如:echo「」;),它們將不起作用。 – user2058005

+0

我不明白。如果您像我說的那樣修改Html Agility Pack源代碼,它會回答您的問題。如果您有其他問題,請創建另一個問題。 –

+0

對不起,它的工作。 – user2058005