问题标签 [for-xml]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
34 浏览

sql-server - 在 Sql Server 中使用 For Xml 的 XML 结构

我正在尝试使用这种方法为我的表创建一个 xml 输出,但它似乎为 TopLevelItem 复制了多个节点。理想情况下,我希望格式是这样的:

如果我在查询中遗漏任何内容或我使用的方法不正确,请告诉我。

提前致谢。

0 投票
1 回答
47 浏览

sql - Sql ForXml; concatenating fields returning either a comma seperated list or empty string

I have looked through several SO questions on using FOR XML but have either missed, or not found anything specific to my query.

Fortunately, or perhaps not, the service to which I need to submit data wants the fields from my table(s) submitted as attributes rather than elements which means that I can use FOR XML AUTO. However it does require some things that I'm not sure how to write the correct sql to achieve, and for which I would welcome some advice.

Some fields (let's say that I have three named Log1, Log2 and Log3) need to be returned as one attribute called for arguments sake Logs. If all three log fields are Null then it needs to be an empty string, or if they contain data they need to be concatenated with a comma as the separator. I suspect that a simple Coalesce is not the answer here, but I'm not entirely sure what else would do.

As I said I would welcome some suggestions. Thanks.

EDIT

Apologies, should have added some sql to assist.

Log1, Log2 and Log3 should become logs and be either an empty string if all are null or a comma separated list if they contain data.

EDIT2 (current Output with VesselName and Owner removed to preserve confidentiality)

Ass the Log values are null nothing is being returned, Not sure if I can use a form of coalesce to either produce the empty string or a comma separated list. I do know that I need to trim the ticketNumber.

0 投票
1 回答
65 浏览

sql-server - 正确格式化 sql tp 产生预期的 xml 输出

感谢一位 SO 用户,我在 FOR XML 方面取得了进展,但显然我并没有完全正确地获取 sql 语法。

假设我有以下sql

运行时,它会产生以下输出

我真正希望的是以下

事实上,我想在 SQL 中添加第三部分,这样最终可能会得到像这样的 xml

有人能指出我在原始 SQL 查询中出错的地方吗?

谢谢

0 投票
1 回答
31 浏览

sql - 为了使详细信息行与标题行匹配,我缺少什么条件

以下查询;

产生这个输出;

这几乎与我所希望的完全一样,除了两个销售行的详细信息行被重复,而实际上它们应该只出现在相关的销售行中。匹配landingid 显然是拉出了正确的细节线,只是不确定我缺少什么额外的小调整。

谢谢

编辑:将 SQL 查询更改为以下内容;

现在产生以下输出;

至少明细行现在与销售行匹配,但它为每个明细行生成单独的销售行。显然少了一点点。我尝试了 Group By LandingHeaders.LandingId 但这似乎会导致更多问题。

0 投票
1 回答
466 浏览

sql - 将 sql case 语句嵌入到使用 FOR XML 的 sql 查询中

昨天我从一个 SO 用户那里得到了一些很棒的帮助(见这里),这让我朝着我的目标取得了很大的进步。现在我正在尝试确定是否可以将建议的神奇添加嵌入到生成 xml 输出的现有查询中。

现有查询如下:

这会沿着这些线产生 xml 输出;

我想向 Owner 元素( TotalDeductions )再添加一个属性。从我问的上一个问题中,我可以看到 sql 如何计算我所追求的信息以生成总扣除额字段。然而,将这种逻辑添加到 FOR XML 查询中被证明是难以捉摸的。我不愿意说它不能完成,因为在 SQL 中,如果有一点横向思考,似乎几乎没有什么是不能完成的。

如果我只是将查询的大小写部分剪切并粘贴到我的 FOR XML 查询中,编译器会指出 Owed 不是有效名称。我明白了。但是,如果我只是按以下方式嵌入 for xml 的所有者部分;

然后暂时将编译错误放在一边,我不会生成我所追求的 xml。

我是否终于找到了一些在 SQL 中实际上无法完成的事情,或者我只是错过了我应该有的明显的“横向想法”?

谢谢

0 投票
1 回答
79 浏览

sql-server - 在 SQL 中引用 XML 类型时如何避免创建包装元素?

FOR XML在 SQL Server 2008 中闲逛,看看它是否更适合构建 Web 服务响应,而不是依赖 Hibernate 和 HQL 来映射 DTO(或从平面结果集中手动映射它们)。

我创建了一个虚构的例子,其中人们可能有孩子和一组电话号码。

我面临的情况是SELECT name FROM personCte会产生不需要的包装<name>元素,从而导致<name><name first="test" last="test"/></name>.

我可以通过执行以下操作来摆脱额外的包装元素,但我想知道是否有更合适的方法?

该解决方案的一个问题是它不能在 CTE 中使用,因为必须命名所有 CTE 列。

我还想知道是否有比执行子查询更好的方法将多个属性展开为单个元素(例如将名字和姓氏转换为名称)?

这是我正在使用的示例代码:

正确产生:

0 投票
0 回答
436 浏览

sql - T-SQL:如何拥有一个自动增量变量

我正在编写一组复杂的 XML 查询。其中很多是分层查询等Select x , (select y from tbl2 for xml) from table1 for xml。我希望我能找到一种方法来添加一个自动增量变量,以便像这样添加:

我希望变量@incr 返回一个整数,每次我使用它时都会递增。

有一个简单的解决方案吗?

0 投票
3 回答
2728 浏览

sql - SQL FOR XML 生成多个同名节点

我正在尝试创建具有相同名称的子节点,但具有来自使用 xml 的表中不同列的不同数据。但我没有从我建立的查询中得到预期的输出。

有人可以指出构建此查询的正确方法吗?

下面给出的示例表和 FOR XML 查询:

输出 :

预期输出:

0 投票
1 回答
437 浏览

sql - SQL for xml 自动元素包装节点

我有以下代码:

返回:

在此特定示例中,病房重复。我想让它包裹在一个父节点中。似乎做到这一点的唯一方法是使用子查询,我在子查询中指定的不是AUTO,而是PATH和ROOT,并将其作为TYPE返回。

0 投票
1 回答
1443 浏览

sql - 使用 FOR XML EXPLICIT 时删除 xmlns="" 名称空间声明

我正在使用以下方法生成 XML 文档FOR XML EXPLICIT

并得到这样的回应:

问题是我不需要该xmlns属性。

我找到了一个解决方案,但它似乎是一个kludge。

有没有更优雅的方法来解决问题?

不提供使用FOR XML PATH/RAW/AUTO.

EXPLICIT模式是必须的。