2016-03-07 61 views
0

我有一個VIEW SQL中有一個列類型的XML。 VIEW的定義如下。SQL數據庫中XML類型列中的問題

CREATE VIEW [dbo].[View_RequestDetails] 
AS 
    SELECT  
     r.RequestID, r.CompTypeID, ct.Name AS CompType, 
     r.LibID, r.Status, r.StateID, r.History, 
     r.LogID, r.ClosedDate, s.Closed AS StateClosed, 
     r.SubmissionDate, r.SubmitterUID, 
     (submitter.LName + ', ' + submitter.FName + ' ' + submitter.MiddleInit) AS SubmitterName, 
     r.ModifiedDate, r.ModifiedByID, r.LockStatus AS Lock, 
     (modifier.LName + ', ' + modifier.FName + ' ' + modifier.MiddleInit) AS ModifierName, 
     (SELECT AttributeName AS '@key', AttributeValue AS '@value' 
     FROM dbo.View_RequestAttributes ra 
     WHERE ra.RequestId = r.RequestId 
     FOR XML PATH('Attribute'), ROOT('RequestAttributes')) AS RequestAttributes, 
     dbo.fnGetRequestProjectName(r.RequestID) AS ProjectName, 
     dbo.fnGetRequestProjectPriority(r.RequestID) AS ProjectPriority 
    FROM  
     dbo.Request AS r 
    LEFT JOIN 
     dbo.State AS s ON r.StateId = s.StateId 
    LEFT JOIN 
     dbo.ComponentType AS ct ON r.CompTypeID = ct.CompTypeId 
    LEFT JOIN 
     dbo.UserInfo AS submitter ON r.SubmitterUID = submitter.UID 
    LEFT JOIN 
     dbo.UserInfo AS modifier ON r.ModifiedByID = modifier.UID 

爲列生成的XML值具有由於從所生成此視圖中的表列中的值的一些無效字符等(	 ..等)。

有什麼辦法可以限制XML類型的列來生成一個格式良好的XML嗎?

或者我們是否需要在我們的代碼中解析以使XML有效並向用戶顯示?

+1

哪個RDBMS是這個呢?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –

+0

這仍然是開放的嗎?你需要進一步的幫助嗎? [請閱讀:人 - 答案](http://stackoverflow.com/help/someone-answers).Thx! – Shnugo

回答

0

試圖改變這種

(SELECT AttributeName AS '@key', AttributeValue AS '@value' 
    FROM dbo.View_RequestAttributes ra 
    WHERE ra.RequestId = r.RequestId 
    FOR XML PATH('Attribute'), ROOT('RequestAttributes')) AS RequestAttributes, 

這個(你需要TYPE擴展,讓子選擇回來與「真正的」 XML)

(SELECT AttributeName AS '@key', AttributeValue AS '@value' 
    FROM dbo.View_RequestAttributes ra 
    WHERE ra.RequestId = r.RequestId 
    FOR XML PATH('Attribute'), ROOT('RequestAttributes'),TYPE) AS RequestAttributes,