XmlDocument
добавляет пробел в конце закрывающих тегов, даже с PreserveWhitespace
, установленным на true
.XmlDocument не сохраняет пробелы
// This fails
string originalXml = "<sample><node id=\"99\"/></sample>";
// Convert to XML
XmlDocument doc = new XmlDocument();
doc.PreserveWhitespace = true;
doc.LoadXml(originalXml);
// Save back to a string
string extractedXml = null;
using (MemoryStream stream = new MemoryStream())
{
doc.Save(stream);
stream.Position = 0;
using(StreamReader reader = new StreamReader(stream))
{
extractedXml = reader.ReadToEnd();
}
}
// Confirm that they are identical
Assert.AreEqual(originalXml, extractedXml);
Нужный выход:
<sample><node id="99"/></sample>
Но я получаю:
<sample><node id="99" /></sample>
Есть ли способ, чтобы подавить это дополнительное пространство?
Просто из любопытства, почему это имеет значение? Документ структурно одинаковый в любом случае. –
.Save использует XmlTextWriter внутренне и что дополнительное пространство документировано. –
Вы можете использовать [XNode.DeepEquals] (https://msdn.microsoft.com/en-us/library/bb336169%28v=vs.110%29. aspx) для сравнения XML. Также см. Статью [this] (http://blogs.msdn.com/b/ericwhite/archive/2009/01/28/equality-semantics-of-linq-to-xml-trees.aspx). –