何らかの操作を行うために、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);
コンソールへの 2 行の出力が一致することを期待しますが、代わりに次のようになります。
<!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 クラスがこれを行うのを止める方法を知っている人はいますか?