问题描述
我需要从查询中获取 XML:
SELECT
... join ...
FOR XML PATH ('parent-lines'),ROOT('main-tag'),ELEMENTS XSINIL;
我已经能够得到这个结构:
<main-tag>
<parent-lines>
...
<child-name>EXAMPLE</child-name> //case when the child is popolated
<child-name xsi:nil=true /> //case when the child is empty
...
</parent-lines>
...many parent-lines
</main-tag>
现在我有两个问题:
- 第一个是让子名称没有 xsi: nil 属性,以防它们为空:
<child-name />
- 第二个是我有某种“标题”,静态的,它适用于任何父标签,我想将其插入到我的 XML 的结构中,并获得与此类似的结构:
<main-tag>
<header>
...
<child-name>A sort of explain of the field</child-name>
...
</header> //single header
<parent-lines>...</parent-lines> //many parent-lines
...
</main-tag>
你能帮我吗?
解决方法
我解决了问题,首先感谢@Larnu 和他的评论,第二次使用这种技术:
SELECT
(SELECT 'Cip' AS 'Cip' FOR XML PATH (''),TYPE) AS Header,(SELECT 'Ciop' AS 'Ciop' FOR XML PATH ('Parent-lines'),TYPE)
FOR XML PATH (''),ROOT('main-tag');
在第一个嵌套的“Select”中,在 PATH 中我没有输入任何内容,但在外面我用我想要获得“AS Header”的名称对其进行了洗礼。 然而,在第二个“选择”中,我在 PATH 中输入了我想为每个“父行”重复的名称。
我希望这个问题/答案对其他用户有用。再次感谢,祝大家好运!