1

私のSQLは非常に単純です

Emp から ID を [従業員 ID]、EmpName を [従業員名]、Sal を [給与] として選択 FOR XML AUTO, ELEMENTS, ROOT('customers')

このSQLを実行すると、xml形式で出力が得られます。xml出力は

<customers>
<Emp>
  <Employee_x0020_ID>1</Employee_x0020_ID>
  <Employee_x0020_Name>Tridip</Employee_x0020_Name>
  <Salary>2500</Salary>
</Emp>
<Emp>
  <Employee_x0020_ID>2</Employee_x0020_ID>
  <Employee_x0020_Name>Ari</Employee_x0020_Name>
  <Salary>4000</Salary>
</Emp>
<Emp>
  <Employee_x0020_ID>3</Employee_x0020_ID>
  <Employee_x0020_Name>Dibyendu</Employee_x0020_Name>
  <Salary>3500</Salary>
</Emp>
</customers>

xml ファイル名が表示されている場合は、フィールド名がスペースのために動的に生成されていることがわかります。<Employee_x0020_ID>1</Employee_x0020_ID> これは動的に生成されますが、<Employee ID>1</Employee ID> のように生成する必要があります。XMLファイル名にスペースを維持する必要があります。どうすればいいか教えてください........ありがとう

4

3 に答える 3

6

W3Schools のXML 要素から:

XML 要素は、次の命名規則に従う必要があります。

  • 名前には文字、数字、その他の文字を含めることができます
  • 名前は数字または句読点で始めることはできません
  • 名前は文字 xml (または XML、または Xml など) で始めることはできません
  • 名前にスペースを含めることはできません

任意の名前を使用できます。予約語はありません。

(強調を追加)

于 2011-01-21T08:39:44.387 に答える
4

これは同じ質問だと思いますか? SQL Server 2005 での FOR XML AUTO と列名のスペースの問題

答えは同じです。XML タグ名にスペースを含めることはできません。

于 2011-01-21T07:45:40.757 に答える
1

XML のふりをしている、探している出力を次に示します。どのパーサーでも、それを XML にキャストすることはできません (少なくともそうすべきではありません - SQL Server ではできません)。

;with emp(ID, EmpName, Sal) as (select
    1, 'tridip', 2500 union all select
    2, 'ari', 4000)

select replace(convert(varchar(max),(
    select ID as [Employee ID], EmpName as [Employee Name], Sal as [Salary] 
    from Emp 
    FOR XML AUTO, ELEMENTS, ROOT('customers'))),
    '_x0020_', ' ')

出力 (わかりやすくするために再フォーマット - SQL Server はすべてを 1 行で返します)

<customers><Emp><Employee ID>1</Employee ID><Employee Name>tridip
</Employee Name><Salary>2500</Salary></Emp><Emp>
<Employee ID>2</Employee ID><Employee Name>ari</Employee Name>
<Salary>4000</Salary></Emp></customers>
于 2011-01-21T09:08:10.790 に答える