SQL Server 2005 لـ XML Explicit - بحاجة إلى مساعدة في التنسيق
-
08-06-2019 - |
سؤال
لدي جدول بهيكل مثل ما يلي:
------------------------------
LocationID | AccountNumber
------------------------------
long-guid-here | 12345
long-guid-here | 54321
للانتقال إلى إجراء مخزن آخر، أحتاج إلى أن يبدو XML بالشكل التالي:
<root>
<clientID>12345</clientID>
<clientID>54321</clientID>
</root>
أفضل ما تمكنت من فعله حتى الآن هو الحصول على هذا النحو:
<root clientID="10705"/>
أنا أستخدم عبارة SQL هذه:
SELECT
1 as tag,
null as parent,
AccountNumber as 'root!1!clientID'
FROM
Location.LocationMDAccount
WHERE
locationid = 'long-guid-here'
FOR XML EXPLICIT
لقد ألقيت نظرة على الوثائق حتى الآن صفحة MSDN, ، ولكني لم أخرج بالنتائج المرجوة.
@كلغ،
لقد أعطاني لك هذا الإخراج في الواقع:
<root>
<Location.LocationMDAccount>
<clientId>10705</clientId>
</Location.LocationMDAccount>
</root>
انا ذاهب الى العصا مع FOR XML EXPLICIT
من كريس ليون في الوقت الراهن.
المحلول
يحاول
SELECT
1 AS Tag,
0 AS Parent,
AccountNumber AS [Root!1!AccountNumber!element]
FROM
Location.LocationMDAccount
WHERE
LocationID = 'long-guid-here'
FOR XML EXPLICIT
نصائح أخرى
جرب هذا يا كريس:
SELECT
AccountNumber as [clientId]
FROM
Location.Location root
WHERE
LocationId = 'long-guid-here'
FOR
XML AUTO, ELEMENTS
متأسف للغاية!لقد خلطت ما كنت تسأل عنه.أفضّل XML AUTO فقط لسهولة الصيانة، ولكن أعتقد أن أيًا منهما فعال.وأعتذر عن الإطاله ;-)
باستخدام SQL Server 2005 (أو من المفترض 2008) أجد أن XML PATH يسمح بصيانة SQL بشكل أسهل بكثير من XML Explicit (خاصة عندما يصبح SQL أطول).
في هذه الحالة:
SELECT AccountNumber as "clientID"
FROM Location.LocationMDAccount
WHERE locationid = 'long-guid-here'
FOR XML PATH (''), Root ('root');
حصلت عليه مع:
select
1 as tag,
null as parent,
AccountNumber as 'root!1!clientID!element'
from
Location.LocationMDAccount
where
locationid = 'long-guid-here'
for xml explicit
SELECT 1 as tag, null as parent, AccountNumber as 'clientID!1!!element' FROM Location.LocationMDAccount WHERE locationid = 'long-guid-here' FOR XML EXPLICIT, root('root')
لا تنتمي إلى StackOverflow