如何在xml文件中插入子根节点

时间:2009-11-02 09:47:24

标签: sql-server xml

大家好,希望一切都好。我想在我的xml文件中创建一个子根节点,如

<CapitalJobsList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<JobAds> -- element to create
  <JobAd>
    <AdvertiserDetails>
      <AdvertiserId>718508549</AdvertiserId>
      <AdvertiserName>ABC</AdvertiserName>
    </AdvertiserDetails>
    <ConsultantDetails>
      <ContactName>Naga Divakar</ContactName>
      <ContactPhone>6239 7755</ContactPhone>
      <ContactEmail>vndivakar@yahoo.com</ContactEmail>
      <ContactFax>12345678912</ContactFax>
    </ConsultantDetails>
    <JobAdDetails>
      <DateEntered>2009-10-03T21:09:35.500</DateEntered>
      <AdvertiserJobRef>83754865</AdvertiserJobRef>
      <Title>IT Operations Manager</Title>
      <DescriptionShort>Large scale/exciting projects Mentor and manage o...</DescriptionShort>
      <Description>Large scale/exciting projects Mentor and manage others Management/technical mix This is a fantastic opportunity to join a high profile client who is active across both the commercial and Government domain. As the IT Operations Manager you will be responsible for leading and mentoring a small team of Infrastructure Engineers to ensure the availability and performance of the IT infrastructure. You w</Description>
      <SalaryMin>0.00</SalaryMin>
      <SalaryMax>0.00</SalaryMax>
      <WorkType xsi:nil="true" />
      <Location>) as [JobAd/JobAdDetails/Bullets],
       isnull(Job</Location>
      <PostCode>2600</PostCode>
      <ClosingDate>2009-11-01T00:00:00</ClosingDate>
      <Keywords xsi:nil="true" />
      <ApplyEmail xsi:nil="true" />
      <ApplyURL>http://jobview.careerone.com.au/GetJob.aspx?JobID=83754865</ApplyURL>
    </JobAdDetails>
    <JobAdOptions>
      <BlindPost xsi:nil="true" />
      <AdFormatType xsi:nil="true" />
      <AdTemplateName xsi:nil="true" />
      <ShowContactDetails xsi:nil="true" />
      <ShowSalary xsi:nil="true" />
      <HasVideo xsi:nil="true" />
      <ResumeRequired>1</ResumeRequired>
      <ResidentsOnly>0</ResidentsOnly>
    </JobAdOptions>
    <CategoryList>
      <Category xsi:nil="true" />
    </CategoryList>
    <RegionsList>
      <Region>ACT</Region>
    </RegionsList>
    <LevelsList>
      <Level xsi:nil="true" />
    </LevelsList>
  </JobAd>
  <JobAd>
    <AdvertiserDetails>
      <AdvertiserId>718508549</AdvertiserId>
      <AdvertiserName>ABC</AdvertiserName>
    </AdvertiserDetails>
    <ConsultantDetails>
      <ContactName>Naga Divakar</ContactName>
      <ContactPhone>6239 7755</ContactPhone>
      <ContactEmail>vndivakar@yahoo.com</ContactEmail>
      <ContactFax>12345678912</ContactFax>
    </ConsultantDetails>
    <JobAdDetails>
      <DateEntered>2009-10-03T21:09:35.530</DateEntered>
      <AdvertiserJobRef>83731488</AdvertiserJobRef>
      <Title>SAP Developers Required in Canberra - 12 month contract</Title>
      <DescriptionShort>My client, a large government department in Canbe...</DescriptionShort>
      <Description>My client, a large government department in Canberra, seeks two SAP Developers for 12 month ongoing contracts. Two SAP Developers Required Expert level ABAP programming skills Large SAP landscape - SAP R/3, SAP Web, SAP BI, SAP ITS My client, a large government department in Canberra, seeks two SAP Developers for 12 month ongoing contracts. My client is a large government department in Canberra, a</Description>
      <SalaryMin>0.00</SalaryMin>
      <SalaryMax>0.00</SalaryMax>
      <WorkType xsi:nil="true" />
      <Location>) as [JobAd/JobAdDetails/Bullets],
       isnull(Job</Location>
      <PostCode>2600</PostCode>
      <ClosingDate>2009-11-01T00:00:00</ClosingDate>
      <Keywords xsi:nil="true" />
      <ApplyEmail xsi:nil="true" />
      <ApplyURL>http://jobview.careerone.com.au/GetJob.aspx?JobID=83731488</ApplyURL>
    </JobAdDetails>
    <JobAdOptions>
      <BlindPost xsi:nil="true" />
      <AdFormatType xsi:nil="true" />
      <AdTemplateName xsi:nil="true" />
      <ShowContactDetails xsi:nil="true" />
      <ShowSalary xsi:nil="true" />
      <HasVideo xsi:nil="true" />
      <ResumeRequired>1</ResumeRequired>
      <ResidentsOnly>0</ResidentsOnly>
    </JobAdOptions>
    <CategoryList>
      <Category xsi:nil="true" />
    </CategoryList>
    <RegionsList>
      <Region>ACT</Region>
    </RegionsList>
    <LevelsList>
      <Level xsi:nil="true" />
    </LevelsList>
  </JobAd>
</JobAds>   
</CapitalJobsList>

我已经使用sql查询xml路径,如:

select     
       r.advid as [JobAd/AdvertiserDetails/AdvertiserId],
       CompanyName as [JobAd/AdvertiserDetails/AdvertiserName],
       firstname +'' ''+ lastname as [JobAd/ConsultantDetails/ContactName],
       WorkPhone as [JobAd/ConsultantDetails/ContactPhone],
       AdvEmail as [JobAd/ConsultantDetails/ContactEmail],
       FaxNo as [JobAd/ConsultantDetails/ContactFax],
       Job_CreatedDate as [JobAd/JobAdDetails/DateEntered],
       Job_Id as [JobAd/JobAdDetails/AdvertiserJobRef],
       Job_Title as [JobAd/JobAdDetails/Title],
       substring(Job_Description,0,50)+''...'' as  [JobAd/JobAdDetails/DescriptionShort],
       Job_Description as [JobAd/JobAdDetails/Description],
       CONVERT(DECIMAL(10,2),MinSalary) as [JobAd/JobAdDetails/SalaryMin],
       CONVERT(DECIMAL(10,2),MaxSalary) as [JobAd/JobAdDetails/SalaryMax],
       Job_Type as [JobAd/JobAdDetails/WorkType],
       isnull(Job_Bullets,'') as [JobAd/JobAdDetails/Bullets],
       isnull(Job_Location,'') as [JobAd/JobAdDetails/Location],
       Job_PostCode as [JobAd/JobAdDetails/PostCode],
       Job_ExpireDate as [JobAd/JobAdDetails/ClosingDate],
       Job_Keywords as  [JobAd/JobAdDetails/Keywords],
       ApplyEmail as [JobAd/JobAdDetails/ApplyEmail],
       Job_BrandURL+Job_Id as [JobAd/JobAdDetails/ApplyURL],
       BlindPost as [JobAd/JobAdOptions/BlindPost],
       AdFormatType as [JobAd/JobAdOptions/AdFormatType],
       AdTemplateName as [JobAd/JobAdOptions/AdTemplateName],
       ShowContactDetails as [JobAd/JobAdOptions/ShowContactDetails],
       ShowSalary as [JobAd/JobAdOptions/ShowSalary],
       HasVideo as [JobAd/JobAdOptions/HasVideo],
       ResumeRequired as [JobAd/JobAdOptions/ResumeRequired],
       ResidentsOnly as [JobAd/JobAdOptions/ResidentsOnly],
       Job_Category as [JobAd/CategoryList/Category],
       Job_Location_State as [JobAd/RegionsList/Region],
       [Level] as [JobAd/LevelsList/Level]
from DR_Adv_Registration r, DR_CareerOne_ACTJobs j
where r.Advid = j.Advid and job_location_city like(''%'+''+ @City +''+'%'') and job_location_state in('''+ @State +''') and job_status=1 for xml path(''''), Root(''CapitalJobsList''),ELEMENTS XSINIL

那么,建议我如何获得子根节点。提前致谢

1 个答案:

答案 0 :(得分:0)

我认为您需要将初始查询转换为xml类型,然后再次申请xml路径('')


select cast((
select r.advid as [JobAd/AdvertiserDetails/AdvertiserId],
       CompanyName as [JobAd/AdvertiserDetails/AdvertiserName],
       firstname + ' ' + lastname as [JobAd/ConsultantDetails/ContactName],
       WorkPhone as [JobAd/ConsultantDetails/ContactPhone],
       AdvEmail as [JobAd/ConsultantDetails/ContactEmail],
       FaxNo as [JobAd/ConsultantDetails/ContactFax],
       Job_CreatedDate as [JobAd/JobAdDetails/DateEntered],
       Job_Id as [JobAd/JobAdDetails/AdvertiserJobRef],
       Job_Title as [JobAd/JobAdDetails/Title],
       substring(Job_Description, 0, 50) + '...' as 
       [JobAd/JobAdDetails/DescriptionShort],
       Job_Description as [JobAd/JobAdDetails/Description],
       convert(decimal(10, 2), MinSalary) as [JobAd/JobAdDetails/SalaryMin],
       convert(decimal(10, 2), MaxSalary) as [JobAd/JobAdDetails/SalaryMax],
       Job_Type as [JobAd/JobAdDetails/WorkType],
       isnull(Job_Bullets, ') as [JobAd/JobAdDetails/Bullets],
       isnull(Job_Location, ') as [JobAd/JobAdDetails/Location],
       Job_PostCode as [JobAd/JobAdDetails/PostCode],
       Job_ExpireDate as [JobAd/JobAdDetails/ClosingDate],
       Job_Keywords as [JobAd/JobAdDetails/Keywords],
       ApplyEmail as [JobAd/JobAdDetails/ApplyEmail],
       Job_BrandURL + Job_Id as [JobAd/JobAdDetails/ApplyURL],
       BlindPost as [JobAd/JobAdOptions/BlindPost],
       AdFormatType as [JobAd/JobAdOptions/AdFormatType],
       AdTemplateName as [JobAd/JobAdOptions/AdTemplateName],
       ShowContactDetails as [JobAd/JobAdOptions/ShowContactDetails],
       ShowSalary as [JobAd/JobAdOptions/ShowSalary],
       HasVideo as [JobAd/JobAdOptions/HasVideo],
       ResumeRequired as [JobAd/JobAdOptions/ResumeRequired],
       ResidentsOnly as [JobAd/JobAdOptions/ResidentsOnly],
       Job_Category as [JobAd/CategoryList/Category],
       Job_Location_State as [JobAd/RegionsList/Region],
       [Level] as [JobAd/LevelsList/Level]
from   DR_Adv_Registration r,
       DR_CareerOne_ACTJobs jwhere r.Advid = j.Advid
            and job_location_city like('%'+'+ @City +'+'%')
            and job_location_state in (''+ @State +'')
            and job_status = 1 
for xml path('')) as xml) as JobAds for xml path(''), root('CapitalJobsList'), elements xsinil