#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 #.