SQL到XML的数据传输

时间:2015-11-25 16:49:30

标签: sql xml transfer

Ok过去几天一直在努力学习SQL到XML,这是我迄今为止能够自学的。

`SELECT distinct StudentItem.foldername AS "foldername", StudentItem.status, StudentItem.vhrid, StudentItem.firstname, StudentItem.middleinitial, StudentItem.lastname,
dbo.getEnumDescript(StudentType, 'StudentType') AS title,
StudentItem.email, 
dbo.getEnumDescript(OfficeLocation, 'OfficeLocation') AS Office,
practices.id as 'StudentItem/practices/practice/id',
practices.name as 'StudentItem/practices/practice/name',
schoolItem.Name as 'StudentItem/bio/schools/schoolItem/schoolname',
schoolItem.schoolYear as 'lawyerItem/bio/schools/schoolItem/schoolyear'
FROM [dbo].[Student] as lawyerItem
LEFT JOIN [dbo].[StudentGroups] as aprac on StudentItem.vhrid = aprac.vhrid
INNER JOIN [dbo].[PracticeGroups] as practices on aprac.PracticeGroupID = practices.ID
LEFT JOIN [dbo].[StudentEducation] as schoolItem on StudentItem.vhrid = schoolItem.vhrid
where StudentItem.vhrid='50330'
FOR XML path, ROOT ('StudentItem'), ELEMENTS;`  

我得到的是这个

`<StudentItems>
  <row>
    <foldername>susan.wissink</foldername>
    <status>1</status>
    <vhrid>50330</vhrid>
    <firstname>Susan</firstname>
    <middleinitial>M.</middleinitial>
    <lastname>Wissink</lastname>
    <title>Student leader</title>
    <email>swissink@blank.com</email>
    <Office>Phoenix</Office>
    <StudentItem>
      <practices>
        <practice>
          <id>681</id>
          <name>Real Estate Finance and Lending</name>
        </practice>
      </practices>
      <bio>
        <schools>
          <schoolItem>
            <schoolname>&lt;i&gt;Best in America®&lt;/i&gt;, ASU</schoolname>
            <schoolyear>2016</schoolyear>
          </schoolItem>
        </schools>
      </bio>
    </StudentItem>
  </row>
  <row>
    <foldername>susan.wissink</foldername>
    <status>1</status>
    <vhrid>50330</vhrid>
    <firstname>Susan</firstname>
    <middleinitial>M.</middleinitial>
    <lastname>Wissink</lastname>
    <title>Student leader</title>
    <email>swissink@blank.com</email>
    <Office>Phoenix</Office>
    <StudentItem>
      <practices>
        <practice>
          <id>681</id>
          <name>Real Estate Finance and Lending</name>
        </practice>
      </practices>
      <bio>
        <schools>
          <schoolItem>
            <schoolname>&lt;i&gt;Best in America®&lt;/i&gt;, UOP</schoolname>
            <schoolyear>2011-2015</schoolyear>
          </schoolItem>
        </schools>
      </bio>
    </StudentItem>
  </row>`

但我正努力让所有的练习和学校成为那个人的一个入口。或多或少我试图让它看起来像下面。

`<StudentItems>
  <row>
    <foldername>susan.wissink</foldername>
    <status>1</status>
    <vhrid>50330</vhrid>
    <firstname>Susan</firstname>
    <middleinitial>M.</middleinitial>
    <lastname>Wissink</lastname>
    <title>Student leader</title>
    <email>swissink@blank.com</email>
    <Office>Phoenix</Office>
    <StudentItem>
      <practices>
        <practice>
          <id>681</id>
          <name>Real Estate Finance and Lending</name>
          <id>683</id>
          <name>Business and Finance</name>
        </practice>
      </practices>
      <bio>
        <schools>
          <schoolItem>
            <schoolname>&lt;i&gt;Best in America®&lt;/i&gt;, UOP</schoolname>
            <schoolyear>2011-2015</schoolyear>
            <schoolname>&lt;i&gt;Best in America®&lt;/i&gt;, ASU</schoolname>
            <schoolyear>2016</schoolyear>
          </schoolItem>
        </schools>
      </bio>
    </StudentItem>
  </row>`

欢迎任何帮助。谢谢。

1 个答案:

答案 0 :(得分:0)

没有样本数据,很难编写代码并进行测试。但通常您需要做的是创建子查询以创建namespace NeilLibrary { [InterfaceType(ComInterfaceType.InterfaceIsIDispatch)] public interface INeilTest { [DispId(1)] string DoMethodReturn(string name); [DispId(2)] string DoMethodOut(string name, out string name2, out bool isPrev); } [Guid("BA7CC0F2-9C07-4EF9-B799-18D317B7E293")] [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] [ProgId("NeilLibrary.NeilTest")] public class NeilTest : INeilTest { [ComVisible(true)] public string DoMethodReturn(string name) { return "name: " + name; } [ComVisible(true)] public string DoMethodOut(string name, out string name2, out bool isPrev) { name2 = "New Value"; isPrev = true; return "Name: " + name; } } } practice XML节点。像这样:

schoolItem