![](/img/trans.png)
[英]Can i specify a schema to build an XDocument while loading a xml file?
[英]How can I retrieve XML nodes dynamically from SQL Server and use XDocument to build a file from a template with them?
我有一個XML模板,其中包含我需要的所有標頭。 我使用XDocument
加載它,然后使用XElements
構建節點。 但是,這意味着我目前正在對進入文件所需的數據位進行硬編碼。
我注意到使用SQL Server可以使用XML
數據類型將數據存儲在數據庫中。 使用這種方法,最好瀏覽每條記錄並動態構建XML
文件。
但是,我發現我的方法存在一些問題。 可能有兩個節點共享同一父節點。 有沒有辦法存儲節點及其父節點,並在XDocument
使用某些東西來合並它們?
這是我的XML的樣本塊
<AddInfoCollection>
<AddInfo>
<Key>TransportReference</Key>
<Value>666777888</Value>
</AddInfo>
<AddInfo>
<Key>UI_NKCarrierSCAC</Key>
<Value>ABCD</Value>
</AddInfo>
<AddInfo>
<Key>SchDLoading</Key>
<Value>1234</Value>
</AddInfo>
<AddInfo>
<Key>SchDArrival</Key>
<Value>12345</Value>
</AddInfo>
</AddInfoCollection>
在數據庫中,我想表應該是:
Field (varchar(200)
Value (varchar(200)
XML
樣品:
Field Value XML
----------------------------------------------------------------
TransportReference 666777888 <AddInfoCollection>
<AddInfo>
<Key>TransportReference</Key>
<Value>666777888</Value>
</AddInfo>
<AddInfoCollection>
例如:
USE ADVENTUREWORKS
SELECT TOP 2 * FROM HUMANRESOURCES.EMPLOYEE FOR XML PATH
這將返回結果集為以下XML。 使用SELECT ... FOR XML的其他變體來定制XML以符合您的要求。
<row>
<EmployeeID>1</EmployeeID>
<NationalIDNumber>14417807</NationalIDNumber>
<ContactID>1209</ContactID>
<LoginID>adventure-works\guy1</LoginID>
<ManagerID>16</ManagerID>
<Title>Production Technician - WC60</Title>
<BirthDate>1972-05-15T00:00:00</BirthDate>
<MaritalStatus>M</MaritalStatus>
<Gender>M</Gender>
<HireDate>1996-07-31T00:00:00</HireDate>
<SalariedFlag>0</SalariedFlag>
<VacationHours>21</VacationHours>
<SickLeaveHours>30</SickLeaveHours>
<CurrentFlag>1</CurrentFlag>
<rowguid>AAE1D04A-C237-4974-B4D5-935247737718</rowguid>
<ModifiedDate>2004-07-31T00:00:00</ModifiedDate>
</row>
<row>
<EmployeeID>2</EmployeeID>
<NationalIDNumber>253022876</NationalIDNumber>
<ContactID>1030</ContactID>
<LoginID>adventure-works\kevin0</LoginID>
<ManagerID>6</ManagerID>
<Title>Marketing Assistant</Title>
<BirthDate>1977-06-03T00:00:00</BirthDate>
<MaritalStatus>S</MaritalStatus>
<Gender>M</Gender>
<HireDate>1997-02-26T00:00:00</HireDate>
<SalariedFlag>0</SalariedFlag>
<VacationHours>42</VacationHours>
<SickLeaveHours>41</SickLeaveHours>
<CurrentFlag>1</CurrentFlag>
<rowguid>1B480240-95C0-410F-A717-EB29943C8886</rowguid>
<ModifiedDate>2004-07-31T00:00:00</ModifiedDate>
</row>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.