public void DownloadFromSheet(string xmlPath = null) { string xmlSavePath = ""; if (string.IsNullOrEmpty(xmlPath)) { xmlSavePath = Setting.Config.XmlSavePath; } if (string.IsNullOrEmpty(xmlSavePath)) { xmlSavePath = xmlPath; } if (string.IsNullOrEmpty(xmlSavePath)) { Console.WriteLine("xml path is null"); return; } System.IO.Directory.CreateDirectory(new FileInfo(xmlPath).Directory.FullName); System.IO.Directory.CreateDirectory(new FileInfo(Setting.Config.CSVSavePath).Directory.FullName); // 생성할 XML 파일 경로와 이름, 인코딩 방식을 설정합니다. XmlTextWriter textWriter = new XmlTextWriter(xmlSavePath, Encoding.UTF8); // 들여쓰기 설정 textWriter.Formatting = System.Xml.Formatting.Indented; // 문서에 쓰기를 시작합니다. textWriter.WriteStartDocument(); textWriter.WriteStartElement("base"); textWriter.WriteAttributeString("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); textWriter.WriteAttributeString("xmlns:xsd", "http://www.w3.org/2001/XMLSchema"); textWriter.WriteAttributeString("type", "string"); textWriter.WriteStartElement("tags"); textWriter.WriteStartElement("tag"); textWriter.WriteAttributeString("language", "한국어"); textWriter.WriteEndElement(); textWriter.WriteEndElement(); textWriter.WriteStartElement("strings"); var csv = DriveManager.DownloadCSV("1oY5F5P-tMBj1-kryB5gR4gS4T5KrlqmDc-tHQBrQBDo"); System.IO.File.WriteAllText(Setting.Config.CSVSavePath, csv); var splitnl = csv.Split('\n'); using (var reader = new StreamReader(Setting.Config.CSVSavePath)) { using (var td = new CsvReader(reader, CultureInfo.InvariantCulture)) { var records = td.GetRecords <TranslateData>(); foreach (var record in records) { textWriter.WriteStartElement("string"); textWriter.WriteAttributeString("id", record.Id); var translateText = record.Translate; translateText = translateText.Replace("\\n", "\n"); textWriter.WriteAttributeString("text", translateText); textWriter.WriteEndElement(); } } } textWriter.WriteEndElement(); textWriter.WriteEndElement(); textWriter.WriteEndDocument(); textWriter.Close(); }