public void WriteStructuredData() { var c = new XmlNode("C"); var e = new XmlNode("E"); var d = new XmlNode("D") { e }; var b = new XmlNode("B") { c, d }; var f = new XmlNode("F"); var a = new XmlNode("A") { b, f }; var textA = new SourceWriter(a).ToString(); var node = new XmlNode("A") { new XmlNode("B") { new XmlNode("C"), new XmlNode("D") { new XmlNode("E"), }, }, new XmlNode("F"), }; var nodeText = new SourceWriter(node).ToString(); var expected = @"<A> <B> <C> </C> <D> <E> </E> </D> </B> <F> </F> </A>"; textA.Should().Be(nodeText); textA.Should().Be(expected); string WithoutSpaces(string source) => source.Replace(" ", ""); WithoutSpaces(textA).Should().Contain(WithoutSpaces(new SourceWriter(b).ToString())); }