Заменить самозакрывающийся узел на парные пустые узлы в XML в SQL Server

#c# #sql-server #xml #ssis #nodes

#c# #sql-сервер #xml #ssis #узлы

Вопрос:

Я пишу пакет SSIS, в который мы вводим существующий XML, а затем добавляем к нему пару узлов, а затем выплевываем его обратно. Это должно быть точно так же, как он входит и выходит обратно, за исключением 3 новых столбцов. Для этого я использую комбинацию SQL Server и C # Script в SSIS.

Однако это проблема: исходный XML-документ содержит эти узлы, например:

 <Base_Entry&&t;
    <Customer&&t;</Customer&&t;
    <Profit&&t;</Profit&&t;
  

Когда я помещаю данные в базу данных в SQL Server, а затем выполняю некоторый синтаксический анализ для других узлов, а затем пытаюсь вывести XML обратно, он выглядит следующим образом для 2 узлов.

 <Base_Entry&&t;
   <Customer /&&t;
   <Profit /&&t;
  

Теперь я знаю, что семантически самозакрывающийся узел такой же, как и верхний. Это для пробелов. Однако наш поставщик не может с ним работать и запрашивает, чтобы он НЕ был самозакрывающимся узлом. Он хочет, чтобы все было точно так же, как в оригинале.

Однако я не могу понять это, независимо от того, что я делаю на SQL Server. Пустые узлы выходят с самозакрывающимся узлом. Я попытался изменить его в C #, используя script task для SSIS, пытаясь выполнить

  XMLOutput.InnerXml = "<?xml version="1.0" encodin&="UTF-8"?&&t;"   
 Dts.Variables["XMLOutput"].Value.ToStrin&().Replace("<Customer /&&t;", "<Customer&&t;</Customer&&t;");
  

Вывод XMLOutput.В InnerXml есть все содержимое XML, и я пытаюсь просто заменить слова там вручную, пытаясь выполнить замену.

Если кто-нибудь может мне помочь, как сделать это сначала только с SQL Server, это было бы оценено больше всего. ЕСЛИ нет, есть ли способ просто заменить его в C #?

Комментарии:

1. «… Когда я помещаю данные в базу данных в SQL Server, а затем выполняю некоторый синтаксический анализ для других узлов, а затем пытаюсь вывести XML обратно …» Пожалуйста, поделитесь своим кодом на T-SQL. Вам необходимо предоставить минимально воспроизводимый пример.

2. Зачем это делать в SQL, когда вы можете легко модифицировать часть кода на c #.