How to read second record within XML file by using openxml?

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • yingwen
    New Member
    • Apr 2007
    • 17

    How to read second record within XML file by using openxml?

    I have a xml similar like this:

    <Member ID="123">
    <DateBorrowed>1 1-01-2006</DateBorrowed>
    <Book ID="222"
    Title=""ABC">
    <Category> Fiction</Category>
    </Book>
    <Book ID="333"
    Title=""ABu">
    <Category>Child ren</Category>
    </Book>
    ......
    </Member>


    I used OPENXML to read into MS SQL server database table, but it only reads first book. What should I do to read all three books, and insert 2 lines into the table:

    MemberID | DateBorrowed | BookID | BookTitle | BookCategory
    123 11-01-2006 222 ABC Fiction
    123 11-01-2006 333 ABu Children
    ......

    My code following only read first book:

    CREATE PROCEDURE sp_insert_Refun dCorrectionAcce ptance AS

    DECLARE @iTree int
    DECLARE @xmlFile VARCHAR(2000)

    EXEC sp_xml_prepared ocument @iTree OUTPUT, @xmlFile,
    SELECT *
    FROM OPENXML (@iTree,'root', 3)
    WITH (
    MemberID decimal '/Member/@ID',
    DateBorrowed datetime 'DateBorrowed/text()',
    BookID decimal '/book/@id',
    bookTitle varchar(200) '/book/@title',
    bookCat varchar(100) '/book/category/text()'

    )
    EXEC sp_xml_removedo cument @iTree
    GO


    Thank you.
  • iburyak
    Recognized Expert Top Contributor
    • Nov 2006
    • 1016

    #2
    Try this:


    1. Create procedure:

    [PHP]CREATE PROCEDURE sp_insert_Refun dCorrectionAcce ptance
    @xmlFile VARCHAR(2000)
    AS

    DECLARE @iTree int

    EXEC sp_xml_prepared ocument @iTree OUTPUT, @xmlFile
    SELECT *
    FROM OPENXML (@iTree,'Member/Book',8)
    WITH (
    MemberID decimal '../@ID',
    DateBorrowed datetime '../DateBorrowed/text()',
    BookID decimal '@ID',
    bookTitle varchar(200) '@Title',
    bookCat varchar(100) 'Category/text()'

    )
    EXEC sp_xml_removedo cument @iTree
    GO[/PHP]

    2. Execute procedure:

    [PHP]sp_insert_Refun dCorrectionAcce ptance
    '
    <Member ID="123">
    <DateBorrowed>1 1-01-2006</DateBorrowed>
    <Book ID="222" Title="ABC">
    <Category> Fiction</Category>
    </Book>
    <Book ID="333" Title="ABu">
    <Category>Child ren</Category>
    </Book>
    </Member>
    '[/PHP]

    Don't forget that XML is case sensitive.

    Hope it helps.

    Good Luck.

    Irina.

    Comment

    Working...