SQL Server 2008 рендеринг вложенного XML - PullRequest
1 голос
/ 04 января 2012

Как сохранить строку, которая уже является XML, в качестве атрибута корневого узла другого XML?

Строка, которую я хочу сохранить, - @inputXmlString.Это значение:

<?xml version="1.0" encoding="utf-8"?>
<OneViewReviewRq
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<LOAN>ASFDK</LOAN>
</OneViewReviewRq>

Я должен сохранить это значение в качестве атрибута для другого узла, скажем row, который является корневым узлом.Вот что нужно для вывода:

<root oneViewXml="<?xml version="1.0" encoding="utf-8"?>
<OneViewReviewRq
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<LOAN>ASFDK</LOAN>
</OneViewReviewRq>" />

Проблема в следующем: когда я использую for xml path или for xml raw, кавычки и <, > символы отображаются не так, как есть&lt; и &gt; и т. Д.

Это запрос, который я использую:

select @OutputXml=(select @inputXmlString as '@oneViewXml'
for xml path('root'))

Это вывод:

<root oneViewXml="&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;&#xD;&#xA;&lt;OneViewReviewRq&#xD;&#xA;    xmlns:xsi = &quot;http://www.w3.org/2001/XMLSchema-instance&quot;&#xD;&#xA;    xmlns:xsd = &quot;http://www.w3.org/2001/XMLSchema&quot;&gt;&#xD;&#xA;&lt;LOAN&gt;ASFDK&lt;/LOAN&gt;&#xD;&#xA;&lt;/OneViewReviewRq&gt;" />

1 Ответ

0 голосов
/ 04 января 2012

Именно так и должно быть, потому что <>& - недопустимые символы в атрибутах XML. Когда вы запросите ваш XML для значения атрибута, вы получите XML обратно, как это было.

Попробуйте это:

declare @inputXmlString nvarchar(max) = 
'<?xml version="1.0" encoding="utf-8"?>
<OneViewReviewRq
    xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd = "http://www.w3.org/2001/XMLSchema">
<LOAN>ASFDK</LOAN>
</OneViewReviewRq>'

declare @OutputXml xml

select @OutputXml=(select @inputXmlString as '@oneViewXml'
for xml path('root'))

select @OutputXml.value('root[1]/@oneViewXml', 'nvarchar(max)')

http://data.stackexchange.com/stackoverflow/qt/123198/

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