我正在将包含一些 html 的字符串加载到 XmlDocument 类中,以便对其进行一些操作,然后再将其转换回字符串。
以下代码演示了我在做什么;
// Example of the HTML I am working with
var documentTypeDeclaration = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
var html = documentTypeDeclaration + "<html><body><div>£300 ©</div></body></html>";
// Load the HTML into an XmlDocument
var xmlDocument = new XmlDocument();
xmlDocument.XmlResolver = null;
xmlDocument.LoadXml(html);
// Manipulate the HTML...
// Get the HTML back out
var savedHtml = xmlDocument.OuterXml;
Console.WriteLine(html);
Console.WriteLine(savedHtml);
我希望输出到控制台的两行输出匹配,但我得到了这个-
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html><body><div>£300 ©</div></body></html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"[]><html><body><div>£300 ©</div></body></html>
所以看起来 [] 已添加到 doc 类型声明中,并且所有 HTML 字符类都已转换为它们的实际字符。这尤其令人讨厌,因为 HTML 现在不再符合标准。
有谁知道我怎样才能阻止 XmlDocument 类这样做?