Имя поля с проблемой пространства в случае для выхода XML Auto

StackOverflow https://stackoverflow.com/questions/4756402

Вопрос

Мой SQL очень прост

Выберите ID как [ID сотрудников], Empname как [имя сотрудника], SAL как [зарплата] из EMP для XML Auto, Elements, Root («клиенты»)

Когда я выполняю этот 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, вы можете понять, что имя поля генерируется динамически из -за пространства.u003CEmployee_x0020_ID> 1u003C/Employee_x0020_ID> это динамически генерируется, но я хочу, чтобы это было сгенерированоu003CEmployee ID> 1u003C/Employee ID> Анкет Я хочу, чтобы пространство было поддержано в XML -подавленном имени. Так что, пожалуйста, скажите мне, что делать ........ спасибо

Это было полезно?

Решение

Вот выход, который вы ищете, притворяясь 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 возвращает все на одной строке)

<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>

Другие советы

Из XML -элементы в W3Schools:

Элементы XML должны следовать этим правилам именования:

  • Имена могут содержать буквы, номера и другие символы
  • Имена не могут начинаться с номера или знака препинания
  • Имена не могут начинаться с букв XML (или XML, или XML и т. Д.)
  • Имена не могут содержать пробелы

Любое имя может быть использовано, слова не зарезервированы.

(Акцент добавлен)

Я думаю, это тот же вопрос?Для XML Auto и имени столбца с проблемой пространства в SQL Server 2005

Ответ такой же. У вас не может быть места в имени тега XML.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top