using System; using System.Collections.Generic; namespace SlideCombine { public class DocumentMetadata { public string Title { get; set; } public string OtherTitles { get; set; } public string Volume { get; set; } public string ISBN { get; set; } public string Creator { get; set; } public string Contributor { get; set; } public string IssuedDate { get; set; } public string Publisher { get; set; } public string Place { get; set; } public string ClassificationNumber { get; set; } public string Page { get; set; } public List TableOfContents { get; set; } public string Subject { get; set; } public string Date { get; set; } public string Spatial { get; set; } public string OtherISBN { get; set; } public string OtherTime { get; set; } public string Url { get; set; } public DocumentMetadata() { TableOfContents = new List(); } public string ToFormattedString() { var result = new System.Text.StringBuilder(); // Title行 result.AppendLine($"title:{Title}"); // Other titles行(如果有) if (!string.IsNullOrEmpty(OtherTitles)) { result.AppendLine($"Other titles:{OtherTitles}"); } // Volume行 result.AppendLine($"Volume:{Volume}"); // ISBN行 if (!string.IsNullOrEmpty(ISBN)) { result.AppendLine($"ISBN:{ISBN}"); } // Creator行 if (!string.IsNullOrEmpty(Creator)) { result.AppendLine($"creator:{Creator}"); } // Contributor行 if (!string.IsNullOrEmpty(Contributor)) { result.AppendLine($"contributor:{Contributor}"); } // IssuedDate行 result.AppendLine($"issuedDate:{IssuedDate}"); // Publisher行 result.AppendLine($"publisher:{Publisher}"); // Place行 result.AppendLine($"place:{Place}"); // Classification number行 result.AppendLine($"Classification number:{ClassificationNumber}"); // Page行 result.AppendLine($"page:{Page}"); // Table of contents result.AppendLine("tableOfContents:"); foreach (var bookmark in TableOfContents) { if (!string.IsNullOrEmpty(bookmark.Title)) { result.Append(bookmark.Title.Trim()); if (!string.IsNullOrEmpty(bookmark.Page)) { // 注意:使用14个短横线,与需求示例一致 result.Append("---------------"); result.Append(bookmark.Page); } result.AppendLine("
"); } } // Subject行 result.AppendLine($"subject:{Subject}"); // Date行 if (!string.IsNullOrEmpty(Date)) { result.AppendLine($"date:{Date}"); } // Spatial行 if (!string.IsNullOrEmpty(Spatial)) { result.AppendLine($"spatial:{Spatial}"); } // Other ISBN行 if (!string.IsNullOrEmpty(OtherISBN)) { result.AppendLine($"Other ISBN:{OtherISBN}"); } // Other time行 if (!string.IsNullOrEmpty(OtherTime)) { result.AppendLine($"Other time:{OtherTime}"); } // URL行 if (!string.IsNullOrEmpty(Url)) { result.AppendLine($"url:{Url}"); } return result.ToString(); } } }