我有一個Xml文件,我試圖解析數據庫表。將xml傳遞到數據庫的SQL查詢
我有一些代碼可以做到這一點,但它不會將代碼合理地組織到表格中,因爲它會返回沒有任何順序的所有產品和房間。
正如您從下面看到的,xml首先定義了房間名稱和RoomId。
接下來是該房間將要出現的產品列表。 這些產品都存儲在一個表中,並已分配父母和孩子的ID。
XML然後爲不同的房間重複此結構。
我已經採取了一些代碼,因爲有很多的樣式和不必要的代碼。
我想要的是一個查詢,可以適當地存儲這些數據,以便我可以將它存儲在數據庫中,然後在SQL Server報表生成器中檢索它。
歡呼
XML
名稱空間
<t:RadDocument xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:t="clr-namespace:Telerik.Windows.Documents.Model;assembly=Telerik.Windows.Documents"
xmlns:s="clr-namespace:Telerik.Windows.Documents.Model.Styles;assembly=Telerik.Windows.Documents"
xmlns:r="clr-namespace:Telerik.Windows.Documents.Model.Revisions;assembly=Telerik.Windows.Documents"
xmlns:n="clr-namespace:Telerik.Windows.Documents.Model.Notes;assembly=Telerik.Windows.Documents" xmlns:th="clr-namespace:Telerik.Windows.Documents.Model.Themes;assembly=Telerik.Windows.Documents"
xmlns:custom1="clr-namespace:TAS2;assembly=RadRichTextBoxExtensions"
xmlns:custom2="clr-namespace:;assembly=RadRichTextBoxExtensions" version="1.2" LayoutMode="Paged" LineSpacing="1" LineSpacingType="Auto" ParagraphDefaultSpacingAfter="30" ParagraphDefaultSpacingBefore="30" SelectedBibliographicStyleName="\APA.XSL" StyleName="defaultDocumentStyle">
XML片斷
<custom1:RoomGroupRangeStart RoomID="26" RoomName="Bathroom" />
<custom1:SemanticRangeStart.Product>
<t:Products HasChild="True" ID="48" Level="1" Name="Plumbing" ParentID="1"/>
</custom1:SemanticRangeStart.Product>
<custom1:SemanticRangeStart.Product>
<t:Products HasChild="True" ID="49" Level="2" Name="Central Heating" ParentID="48" />
</custom1:SemanticRangeStart.Product>
<custom1:SemanticRangeStart.Product>
<t:Products HasChild="True" ID="50" Level="3" Name="Gas" ParentID="49" />
</custom1:SemanticRangeStart.Product>
第一次嘗試
select
nodes.node.value('@ID', 'int') Id,
nodes.node.value('@Name', 'varchar(max)') Name,
nodes.node.value('@ParentID', 'int') ParentId
from
@xml.nodes('//*:Products') nodes (node)
select
nodes.node.value ('@RoomID', 'int') RoomID,
nodes.node.value ('@RoomName', 'varchar(max)') RoomName
from
@xml.nodes('//*:RoomGroupRangeStart') nodes (node)
哪個RDBMS是爲了這個?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –
道歉... SQL服務器 – Simula
這不是一個有效的XML文檔 - 沒有單一的根元素。還有:顯然存在着XML命名空間(從'custom1:'前綴來看) - 但這些命令空間不可見 - 很可能是因爲XML文檔的某些部分丟失了...... –