Sql Server中操作Xml

下图是我需要处理的xml格式,我的需求就是获取每个Element下的TextValue的值。

<XTextDocument xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" EditorVersionString="1.1.1111.1">
  <XElements>
    <Element xsi:type="XTextBody">
      <Attributes />
      <XElements>
        <Element xsi:type="XInputField" StyleIndex="2">
          <Expressions />
          <Attributes />
		  <XElements>
            <Element xsi:type="XString" StyleIndex="2">
              <Text>2019-06-01</Text>
            </Element>
          </XElements>
          <TextValue>2019-06-01</TextValue>
          <EventExpressions />
          <Name>初发病时间</Name>
          <InnerValue>2019-06-01</InnerValue>
          <ToolTip>初发病时间</ToolTip>
          <BackgroundText>初发病时间</BackgroundText>
        </Element>
        <Element xsi:type="XInputField" StyleIndex="2">
          <Expressions />
          <Attributes />
          <XElements>
            <Element xsi:type="XString" StyleIndex="2">
              <Text>2019-06-01</Text>
            </Element>
          </XElements>
          <TextValue>2019-06-01</TextValue>
          <EventExpressions />
          <Name>初诊时间</Name>
          <ValueBinding>
            <DataSource>Date</DataSource>
            <FormatString>YYYY-MM-DD</FormatString>
          </ValueBinding>
          <InnerValue>2019-06-01</InnerValue>
          <ToolTip>初诊时间</ToolTip>
          <BackgroundText>初诊时间</BackgroundText>
        </Element>
        <Element xsi:type="XInputField">
          <Expressions />
          <Attributes />
          <XElements>
            <Element xsi:type="XString">
              <Text>公司职员</Text>
            </Element>
          </XElements>
          <TextValue>公司职员</TextValue>
          <EventExpressions />
          <ValidateStyle>
            <ValueName />
            <Required>true</Required>
            <CustomMessage />
          </ValidateStyle>
          <InnerValue>公司职员</InnerValue>
          <ToolTip>工作情况</ToolTip>
          <BackgroundText>工作情况</BackgroundText>
        </Element>
        <Element xsi:type="XInputField">
          <Expressions />
          <Attributes />
          <XElements>
            <Element xsi:type="XString">
              <Text>本科</Text>
            </Element>
          </XElements>
          <TextValue>本科</TextValue>
          <EventExpressions />
          <ValidateStyle>
            <ValueName />
            <Required>true</Required>
            <CustomMessage />
          </ValidateStyle>
          <InnerValue>本科</InnerValue>
          <ToolTip>文化程度</ToolTip>
          <BackgroundText>文化程度</BackgroundText>
        </Element>
        <Element xsi:type="XInputField">
          <Expressions />
          <Attributes />
          <XElements>
            <Element xsi:type="XString">
              <Text>未婚(恋爱史: 0 次)</Text>
            </Element>
          </XElements>
          <TextValue>未婚(恋爱史: 0 次)</TextValue>
          <EventExpressions />
          <ValidateStyle>
            <ValueName />
            <Required>true</Required>
            <CustomMessage />
          </ValidateStyle>
          <InnerValue>未婚(恋爱史:  次)</InnerValue>
          <ToolTip>婚恋情况</ToolTip>
          <BackgroundText>婚恋情况</BackgroundText>
        </Element>
        <Element xsi:type="XInputField">
          <Expressions />
          <Attributes />
          <XElements>
            <Element xsi:type="XString">
              <Text>不详</Text>
            </Element>
          </XElements>
          <TextValue>不详</TextValue>
          <EventExpressions />
          <Name>家族史情况</Name>
          <InnerValue>不详</InnerValue>
          <ToolTip>双击选择或者直接输入</ToolTip>
          <BackgroundText>家族史情况</BackgroundText>
        </Element>
      </XElements>
    </Element>
  </XElements>
</XTextDocument>

用query来定位到你想要的xml节点,就比如我这里,是要找Element下Name节点值为"初发病时间"的,找到后用value函数,找你当前结点下你想要的节点值,比如我这里就是要获取Element下的TextValue节点的值。 

--用query来定位到你想要的xml节点,就比如我这里,是要找Element下Name节点值为"初发病时间"的,找到后用value函数,找你当前结点下你想要的节点值,比如我这里就是要获取Element下的TextValue节点的值。
SELECT xml字段名.query('XTextDocument/XElements/Element/XElements/Element[Name="初发病时间"]').value('(/Element/TextValue)[1]', 'nvarchar(20)')
FROM 表
WHERE 筛选条件

执行结果如下: 

第一次在数据库中来处理xml,大家如果有更好的获取方式可以评论区交流哦!!! 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值