【问题标题】:xml auto or xml path?xml 自动还是 xml 路径?
【发布时间】:2012-12-15 13:42:01
【问题描述】:

执行以下查询

SELECT     AssessmentFileGUID as '@FileId',AssessmentFileTypeId as '@FileTypeId',AssessmentFileName
FROM         rat.AssessmentFile where AssessmentId=17 
for xml path('File'),root('Files')

给我以下结果:

<Files>
  <File FileId="2A23D836-612F-418E-BDE8-F182C5432A0D" FileTypeId="1">
    <AssessmentFileName>File-123213.pdf</AssessmentFileName>
  </File>
  <File FileId="CDA853B9-C587-4365-BAF5-972F8D217BAC" FileTypeId="2">
    <AssessmentFileName>File-343455.png</AssessmentFileName>
  </File>
</Files>

但是我需要以下格式:

<Files>
  <File FileId="2A23D836-612F-418E-BDE8-F182C5432A0D" FileTypeId="1">File-123213.pdf</File>
  <File FileId="CDA853B9-C587-4365-BAF5-972F8D217BAC" FileTypeId="2">File-343455.png</File>
</Files>

【问题讨论】:

    标签: c# asp.net sql xml


    【解决方案1】:

    将应该作为内容的列指定为data(),它应该放在正确的位置:

    declare @T table (
        AssessmentFileGUID uniqueidentifier not null,
        AssessmentFileTypeId int not null,
        AssessmentFileName varchar(max) not null,
        AssessmentId int not null
    )
    insert into @T(AssessmentFileGUID,AssessmentFileTypeId,AssessmentFileName,
         AssessmentId) values
    ('2A23D836-612F-418E-BDE8-F182C5432A0D',1,'File-123213.pdf',17),
    ('CDA853B9-C587-4365-BAF5-972F8D217BAC',2,'File-343455.png',17)
    
    SELECT     AssessmentFileGUID as '@FileId',AssessmentFileTypeId as '@FileTypeId',
         AssessmentFileName as 'data()' //Change here
    FROM         @T where AssessmentId=17 
    for xml path('File'),root('Files')
    

    结果:

    <Files>
        <File FileId="2A23D836-612F-418E-BDE8-F182C5432A0D" FileTypeId="1">File-123213.pdf</File>
        <File FileId="CDA853B9-C587-4365-BAF5-972F8D217BAC" FileTypeId="2">File-343455.png</File>
    </Files>
    

    【讨论】:

      【解决方案2】:

      不确定,但试试这个

      SELECT     
          AssessmentFileGUID as '@FileId',
          AssessmentFileTypeId as '@FileTypeId',
          AssessmentFileName as "File/text()"
      FROM         
          rat.AssessmentFile 
      where 
          AssessmentId = 17 
      FOR XML PATH('File'), ROOT('Files')
      

      【讨论】:

      • 这给了我 欢迎来到 HDFC Bank NetBanking-4-12-12。 pdfIpad_safari-File-upload-issue.png文件>
      • 抱歉 bilal 回答错误,我不确定,但您可以试试这个 SELECT AssessmentFileGUID as 'File/@FileId',AssessmentFileTypeId as 'File/@FileTypeId',AssessmentFileName as "File /text()" FROM rat.AssessmentFile where AssessmentId=17 for xml path('Files')
      • 谢谢!但这对我有用:AssessmentFileName as 'data() 谢谢你的尝试! :)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-17
      • 1970-01-01
      • 2020-11-12
      • 2018-10-17
      • 2012-08-12
      相关资源
      最近更新 更多