Хорошо, я пытаюсь загрузить большой сложный файл XML в несколько таблиц. Я пытаюсь перейти к одному из самых маленьких узлов, но не могу получить доступ к узлу над ним.
use [ChaseDB]
DECLARE @x XML, @hdoc int, @Path varchar(1000),
@SegmentNotePath varchar(1000)
SELECT @x=P
FROM OPENROWSET (BULK 'C:\XML\XmlFilePractice.xml', SINGLE_BLOB) as
Products(P)
EXEC sp_xml_preparedocument @hdoc OUTPUT, @x
SET @Path= 'Root/Segment/OtherNode/SpecificNode'
SELECT * INTO #TempTable
FROM OPENXML(@hdoc, @Path, 2)
WITH(
SegmentID varchar(20) '../../@ID',
SegmentName varchar(1000) '../../@Name',
Note varchar(1000)'Note',
NoteType varchar(50) '@Type',
SpecificNode int '@ID',
)
Допустим, XML выглядит следующим образом:
<Root>
<Segment ID="AS" Name="Amper Sands">
<Notes>
<Note></Note>
</Notes>
<OtherNode>
<SpecificNode></SpecificNode>
</OtherNode>
</Segment>
<Root>
Итак, если мой путь установлен на SpecificNode, как я могу получить доступ к Заметке? Я знаю, что вы можете создавать резервные копии узлов с помощью ../../, но как вы можете, так сказать, выполнять резервное копирование и детализацию.
SET @Path= 'Root/Segment/OtherNode/SpecificNode'