2016-03-02 83 views
2

需要一些幫助來解析SQL服務器中以下XML中段落元素中的文本。使用sql server解析xml

<FlowDocument PagePadding="5,5,5,5" Name="RTDocument" AllowDrop="True" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"> 
    <Paragraph>Licence Number: 04467</Paragraph> 
    <Paragraph>Licence Number: 3535333</Paragraph> 
</FlowDocument> 

請分享您可能有的任何疑問。

謝謝

+0

下面是XML 許可證編號:04467許可證編號:dddd

+2

請將XML放入您的問題中,而不是註釋中。此外:http://stackoverflow.com/help/how-to-ask –

+0

嗨@SidharthSoneja如果這或任何答案已解決您的問題,請考慮[接受它](http://meta.stackexchange.com/q/5234/179419)通過點擊複選標記。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 – Roberto

回答

3

這樣做的一種方式是:(如果他們有相同的命名空間)

;with xmlnamespaces(default 'schemas.microsoft.com/winfx/2006/xaml/presentation') 
select @xml.value('(/FlowDocument/Paragraph)[1]', 'varchar(max)') + ' ' + 
    @xml.value('(/FlowDocument/Paragraph)[2]', 'varchar(max)') 

另一種方式:

select data.col.value('(*:Paragraph)[1]','varchar(100)') 
    + ' ' + data.col.value('(*:Paragraph)[2]','varchar(100)') as ParamName 
FROM @xml.nodes('(*:FlowDocument)') as data(col) 
3

或(補充羅伯託答案)

;WITH XMLNAMESPACES(DEFAULT 'schemas.microsoft.com/winfx/2006/xaml/presentation') 

SELECT FlowDocument.Paragraph.value('.', 'varchar(MAX)') 
FROM @xml.nodes('//FlowDocument/Paragraph') AS FlowDocument(Paragraph) 

如果有許多段落標記