diff --git a/src/Docfx.Dotnet/Parsers/XmlComment.cs b/src/Docfx.Dotnet/Parsers/XmlComment.cs index 5e736979005..04730423d57 100644 --- a/src/Docfx.Dotnet/Parsers/XmlComment.cs +++ b/src/Docfx.Dotnet/Parsers/XmlComment.cs @@ -586,13 +586,23 @@ private static string TrimEachLine(string text, string indent = "") private static string GetInnerXmlAsMarkdown(string xml) { - if (!xml.Contains('&')) - return xml; - xml = HandleBlockQuote(xml); - var pipeline = new MarkdownPipelineBuilder().UseMathematics().EnableTrackTrivia().Build(); + + // Configure the Markdown pipeline to properly handle lists + var pipeline = new MarkdownPipelineBuilder() + .UseMathematics() + .EnableTrackTrivia() + .Configure(extensions: "advanced-tasklists-noindentcodeblock") // Disable indented code blocks + .Build(); + var markdown = Markdown.Parse(xml, pipeline); - MarkdownXmlDecode(markdown); + + // Only process XML entities if they exist in the content + if (xml.Contains('&')) + { + MarkdownXmlDecode(markdown); + } + var sw = new StringWriter(); var rr = new RoundtripRenderer(sw); rr.ObjectRenderers.Add(new MathInlineRenderer()); diff --git a/test/Docfx.Dotnet.Tests/XmlCommentUnitTest.cs b/test/Docfx.Dotnet.Tests/XmlCommentUnitTest.cs index 9906c514222..838ffc249d9 100644 --- a/test/Docfx.Dotnet.Tests/XmlCommentUnitTest.cs +++ b/test/Docfx.Dotnet.Tests/XmlCommentUnitTest.cs @@ -575,6 +575,42 @@ public sealed class Issue10385 """, comment.Remarks, ignoreLineEndingDifferences: true); } + [Fact] + public void Issue10559() + { + var comment = XmlComment.Parse( + """ + + Test para + + Test start list + + + Item 1. + + + Item 2. + + + Test end list + + + """); + Assert.Equal( + """ +

Test para

+ + Test start list + + Test end list + + """, comment.Remarks, ignoreLineEndingDifferences: true); + } + }