当前位置: 首页 > 编程笔记 >

Microsoft SQL Server 使用XPath表达式指定结构

束新
2023-03-14
本文向大家介绍Microsoft SQL Server 使用XPath表达式指定结构,包括了Microsoft SQL Server 使用XPath表达式指定结构的使用技巧和注意事项,需要的朋友参考一下

示例

SELECT
    'XPath example' AS 'head/title',
    'This example demonstrates ' AS 'body/p',
    'https://www.w3.org/TR/xpath/' AS 'body/p/a/@href',
    'XPath expressions' AS 'body/p/a'
FOR XML PATH('html')
<html>
    <head>
        <title>XPath example</title>
    </head>
    <body>
        <p>This example demonstrates <a href="https://www.w3.org/TR/xpath/">XPath expressions</a></p>
    </body>
</html>

在中FOR XML PATH,没有名称的列成为文本节点。NULL或''因此成为空文本节点。注意:您可以通过使用将已命名的列转换为未命名的列AS *

DECLARE @tempTable TABLE (Ref INT, Des NVARCHAR(100), Qty INT)
INSERT INTO @tempTable VALUES (100001, 'Normal', 1), (100002, 'Foobar', 1), (100003, 'Hello World', 2)

SELECT ROW_NUMBER() OVER (ORDER BY Ref) AS '@NUM',
     'REF' AS 'FLD/@NAME', REF AS 'FLD', '',
     'DES' AS 'FLD/@NAME', DES AS 'FLD', '',
     'QTY' AS 'FLD/@NAME', QTY AS 'FLD'
FROM @tempTable 
FOR XML PATH('LIN'), ROOT('row')
<row>
  <LIN NUM="1">
    <FLD NAME="REF">100001</FLD>
    <FLD NAME="DES">Normal</FLD>
    <FLD NAME="QTY">1</FLD>
  </LIN>
  <LIN NUM="2">
    <FLD NAME="REF">100002</FLD>
    <FLD NAME="DES">Foobar</FLD>
    <FLD NAME="QTY">1</FLD>
  </LIN>
  <LIN NUM="3">
    <FLD NAME="REF">100003</FLD>
    <FLD NAME="DES">Hello World</FLD>
    <FLD NAME="QTY">2</FLD>
  </LIN>
</row>

使用(空)文本节点有助于将先前的输出节点与下一节点分离,以便SQL Server知道为下一列启动一个新元素。否则,当属性已经存在于它认为是“当前”元素上时,就会感到困惑。

例如,在SELECT语句中的元素和属性之间没有空字符串的情况下,SQL Server给出错误:

以属性为中心的列“ FLD / @ NAME”一定不能出现在FOR XML PATH中XML层次结构中以非属性为中心的同级之后。

还要注意,此示例还将XML封装在名为的根元素中row,该元素由指定ROOT('row')

 类似资料:
  • 主要内容:示例XPath表达式通常定义模式以便选择一组节点。 这些模式由XSLT用于执行转换,或者由用于寻址。 XPath规范指定了七种类型的节点,这些节点可以是XPath表达式的执行输出。 根 元素 文本 属性 注释 处理指令 命名空间 XPath使用路径表达式从XML文档中选择节点或节点列表。 以下是从XML文档中选择节点/节点列表的路径和表达式列表。 序号 表达式 描述 1 选择具有给定名称的所有节点。

  • 我试图编写一个XPath表达式,它可以返回与搜索的下一页相关联的URL。 导致搜索下一页的URL始终是中的标记之后的标记中的我一直试图使用术语来提取下一个URL。我在Chrome控制台中的搜索是: 我认为通过指定,我只能返回一个URL(认为[1]选择列表中的第一个元素),但Chrome(和Scrapy)返回了四个URL。我不明白为什么。请帮助我了解如何选择一个URL我正在寻找。 以下是您可以找到给

  • 问题内容: 我是JAXB的新手,并且想知道是否有一种方法可以使用xpath表达式将XML解组到我的响应对象。问题是我正在呼叫第三方Web服务,收到的响应有很多详细信息。我不希望将XML中的所有详细信息映射到我的响应对象。我只希望从xml映射一些细节,使用这些细节我可以使用特定的XPath表达式并将其映射到我的响应对象。有没有注释可以帮助我实现这一目标? 例如考虑以下响应 我只对检索街道名称感兴趣,

  • 我是JAXB新手,想知道是否有一种方法可以使用xpath表达式将XML解组到响应对象。问题是我正在呼叫第三方Web服务,我收到的回复有很多详细信息。我不希望将XML中的所有细节映射到我的响应对象。我只希望映射xml中的一些细节,使用特定的XPath表达式可以获得这些细节,并将其映射到响应对象。有没有注释可以帮助我实现这一点? 例如,考虑以下响应 我只对检索街道名称感兴趣,所以我想使用xpath表达

  • 问题内容: 我正在使用这样的构造: 但是我需要选择所有以“某些文本”开头的文本的链接,所以我想知道这里是否可以使用regexp?在lxml文档中找不到任何内容 问题答案: 您可以执行此操作(尽管该示例不需要正则表达式)。Lxml支持来自EXSLT扩展功能的正则表达式。(请参阅XPath类的lxml文档,但该方法也适用于该方法) 请注意,您需要提供名称空间映射,以便它知道xpath表达式中的“ re

  • 问题内容: 给定一个用户输入字符串,如何确定它在Java中是否为有效的Xpath表达式。很好奇,因为我找不到使用javax.xml.xpath库的方法。谢谢。 问题答案: 我假设您要验证语法,但是如果表达式在xml或xml架构的上下文中有效,则不要验证。您可以使用compile(..)方法,如果xpath的语法不正确,它将引发异常。