Member 13794157 Ответов: 1

Замена XML Sql server


Xml string as below
<StoreConfigurations Version="2.0" LastModified="2019-07-23 12:40:25">
  <ProcessingOptions>
    <PasswordExpirationDays>30</PasswordExpirationDays>
  </ProcessingOptions>
  <Hosts>
    <Host Suffix="MPS" Prefix="MPS_TCP">
      <StoreNumber>39</StoreNumber>
    </Host>
  </Hosts>
</StoreConfigurations>

How to remove StoreNumber value and display as below.

<StoreConfigurations Version="2.0" LastModified="2019-07-23 12:40:25">
  <ProcessingOptions>
    <PasswordExpirationDays>30</PasswordExpirationDays>
  </ProcessingOptions>
  <Hosts>
    <Host Suffix="MPS" Prefix="MPS_TCP">
      <StoreNumber />
    </Host>
  </Hosts>
</StoreConfigurations>


Что я уже пробовал:

Я использовал delete но весь номер магазина был удален

Richard MacCutchan

Вам нужно предоставить более подробное объяснение, включая код, который не сработал.

Member 13794157

DECLARE @X XML='<storeconfigurations version="2.0" lastmodified="2019-07-23 12:40:25">
<processingoptions>
<passwordexpirationdays>30

<хосты>
<суффикс хоста="MPS" префикс="MPS_TCP">
<storenumber>39
<mid>100


'

Набор @х.изменить('заменить значение (/StoreConfigurations/хозяева/хозяин[@суффикс="депутаты" и @префикс="MPS_TCP"]/StoreNumber/текст())[1]
с " "')

Выходные данные должны быть такими, как показано ниже
<storeconfigurations version="2.0" lastmodified="2019-07-23 12:40:25">
<processingoptions>
<passwordexpirationdays>30

<хосты>
<суффикс хоста="MPS" префикс="MPS_TCP">
<номер магазина>
<mid>100


1 Ответов

Рейтинг:
7

phil.o

Согласно с заменить значение (XML DML) - SQL Server | Microsoft Docs[^],

replace value of (/StoreConfigurations/Hosts/Host/StoreNumber/text())[1]
with ""

Или же вы можете попробовать удалить, а затем вставить;
delete /StoreConfigurations/Hosts/Host/StoreNumber
insert <StoreNumber /> as last into (/StoreConfigurations/Hosts/Host)[1]
если вам действительно нужен самозакрывающийся тег.


Member 13794157

DECLARE @X XML='<storeconfigurations version="2.0" lastmodified="2019-07-23 12:40:25">
<processingoptions>
<passwordexpirationdays>30

<хосты>
<суффикс хоста="MPS" префикс="MPS_TCP">
<storenumber>39


'

выберите @х.изменить('заменить значение (/StoreConfigurations/хозяева/хозяин[@суффикс="депутаты" и @префикс="MPS_TCP"]/StoreNumber/текст())[1]
с " "')

выберите @x

Получаю ниже ошибки
Неправильное использование метода типа данных XML "modify". В этом контексте ожидается немутаторный метод.

phil.o

Можете ли вы попробовать с кодом, который я предоставил для замены? Вам не нужно фильтровать по атрибутам суффикс и префикс.

Member 13794157

Я получаю результат с нижеприведенным запросом
Набор @х.изменить('заменить значение (/StoreConfigurations/хозяева/хозяин[@суффикс="депутаты" и @префикс="MPS_TCP"]/StoreNumber/текст())[1]
с " "')
но я хочу получить результат, как показано ниже
<storeconfigurations version="2.0" lastmodified="2019-07-23 12:40:25">
<processingoptions>
<passwordexpirationdays>30

<хосты>
<суффикс хоста="MPS" префикс="MPS_TCP">
<номер магазина>
<mid>100




После StoreNumber у меня есть еще элементы.

phil.o

Тогда использовать вставка (XML DML)[^].