Динамическая сложность XML-файла и cddata - PullRequest
0 голосов
/ 26 ноября 2018

Я создаю небольшую утилиту экспорта для использования нашим персоналом, и одно из требований, которое я встраиваю, это xml.

Я использую следующий метод для генерации файла, и он работает.

public void ExportToXml(string fileOut, Settings exportSettings)
{
 // Connects to the database, and makes the select command.
 SqlConnection conn = ActiveConnection;

 SqlDataAdapter adapter = new SqlDataAdapter(SqlString,conn);

 adapter.SelectCommand.ExecuteNonQuery();
 var dt = new DataTable(exportSettings.TableName.ToString());

        DataSet ds = new DataSet(exportSettings.TableName);
        ds.Tables.Add(dt  );
        adapter.Fill(ds,exportSettings.TableName);

        XmlWriter w = new XmlTextWriter(ExportFolder + @"\" + Path.GetFileNameWithoutExtension(fileOut) + ".XML", Encoding.UTF8);
        w.WriteProcessingInstruction("xml", "version='1.0' encoding='UTF-8'");

        XmlDataDocument xd = new XmlDataDocument(ds);

        XmlDataDocument xdNew = new XmlDataDocument();            


        XmlNode node = xdNew.ImportNode(xd.DocumentElement.LastChild, true);
        node.WriteTo(w);

}

Это замечательно и дает приведенный ниже xml-файл

 <?xml version="1.0" encoding="UTF-8"?>    
 -<ExportSettings>    
 <id>1</id>    
 <ExportName>Test Export</ExportName>    
 <CompnayName>Test Company</CompnayName>    
 <TableName>ExportSettings</TableName>    
 <Fields>ALL</Fields>    
 <SQLScript>Select * from ExportSettings</SQLScript>    
 <isActive>true</isActive>    
 <isDeleted>false</isDeleted>    
 <SystemType>1</SystemType>    
 </ExportSettings>

Однако, как вы видите, конечный пользователь может передать в оператор любую строку sql, что может означать присоединения и т. Д. К этому аккаунтудля этого.И еще одна проблема, которую я имею, состоит в том, как я должен учитывать поля, которые требуют обтекания CDATA вокруг них, то есть, если это было текстовое поле или varchar> 1000, я попытался использовать writexml, но обнаружил, что он довольно некорректен, есть ли лучшие методы для этого.

Я не хочу иметь для этого файл sep xslt, так как это динамический экспортер, который я создаю, поэтому любой совет или библиотека, которые лучше подходят для наборов данных в xml, будут хорошими.

Или я должен использовать совершенно другой подход, при котором мне не нужно беспокоиться о схеме файла, который будет создан на основе набора данных?Опять же я не хочу жестко кодировать что-либо из этого, если это вообще возможно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...