2012-01-04 58 views
1

如何將已經是xml的字符串存儲爲另一個xml的根節點的屬性?SQL Server 2008呈現嵌套的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 pathfor 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;" /> 

回答

0

這完全是因爲它應該是因爲<>&是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/

+0

感謝Mikael..what你說的作品完美。 – anshul2181981 2012-01-05 15:17:43