這裏是超級簡單的代碼,我打破XML聲明:OptionWriteEmptyNodes使用HtmlAgilityPack
HtmlDocument htmlDoc = new HtmlDocument();
htmlDoc.OptionWriteEmptyNodes = true;
htmlDoc.Load("sourcefilepath");
htmlDoc.Save("destfilepath", Encoding.UTF8);
輸入:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8"/>
<link rel="stylesheet" href="main.css" type="text/css"/>
</head>
<body>lots of text here, obviously not relevant to this problem</body>
</html>
輸出:
<?xml version="1.0" encoding="UTF-8" />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=utf-8" />
<link rel="stylesheet" href="main.css" type="text/css" />
</head>
<body>lots of text here, obviously not relevant to this problem</body>
</html>
你可以看到,在第一行有一個錯誤:/>而不是?> 這發生如果我將OptionWriteEmptyNodes設置爲true值。它已被設置爲true,因爲否則元/鏈接標記(以及文檔正文中的一些標記)將不會關閉。
任何人都知道如何解決這個問題?
謝謝,這作爲解決方法看起來不錯。與此同時,在codeplex論壇上也發現了這個問題,但沒有解決,但我相信它很快就會被修復。 – Alex