首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何对xml中不同的元素节点求和,以便在另一个节点中赋值

如何对xml中不同的元素节点求和,以便在另一个节点中赋值
EN

Stack Overflow用户
提问于 2020-04-20 07:09:23
回答 1查看 35关注 0票数 0

我在sql server中有一个xml,它是这样的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<Student version="2">
  <Section name="Report">
    <Glossary>
      <Item name="Some text"</Item>
    </Glossary>
    <InputNumber type="int" min="0" max="100" title="Maths" format="normal" description="Marks obtained in Maths out of 100">
      <Value>70</Value>
    </InputNumber>
    <InputNumber type="int" min="0" max="100" title="Science" format="normal" description="Marks obtained in Science out of 100">
      <Value>60</Value>
    </InputNumber>
    <InputNumber type="int" min="0" max="100" title="English" format="normal" description="Marks obtained in English out of 100">
      <Value>80</Value>
    </InputNumber>
 <InputNumber type="float" min="100" max="100" title="Total " format="normal" description="Total  of all subjects marks added together.">
      <Value/>
    </InputNumber>
    <InputNumber type="int" min="0" max="10000" title="How many students in the class?" format="normal" description="total students>
      <Value>19</Value>
    </InputNumber>
    <InputNumber type="int" min="0" max="100" title="How many subjects are there?" format="normal" description="total subjects">
      <Value>3</Value>
    </InputNumber>
</Section>
<Section>
....
</Section>
</Student>

这里,在/Student1/Section1/InputNumber4的值中,所有主题中的所有标记的总和将被填充,在本例中将为210。

如何求和节点中的值: /Student1/Section1/InputNumber1、/Student1/Section1/InputNumber2、/Student1/Section1/InputNumber3并将其分配给/Student1/Section1/InputNumber4。

EN

回答 1

Stack Overflow用户

发布于 2020-04-20 08:12:44

我猜有一种简单的方法可以做到这一点,但这里有一个变体:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
DECLARE @DataXML XML;

SET @DataXML = '<Student version="2">
    <Section name="Report">
        <Glossary>
            <Item name="Some text"></Item>
        </Glossary>
        <InputNumber type="int" min="0" max="100" title="Maths" format="normal" description="Marks out of 100">
            <Value>70</Value>
        </InputNumber>
        <InputNumber type="int" min="0" max="100" title="Science" format="normal" description="Marks out of 100">
            <Value>60</Value>
        </InputNumber>
        <InputNumber type="int" min="0" max="100" title="English" format="normal" description="Marks out of 100">
            <Value>80</Value>
        </InputNumber>
        <InputNumber type="float" min="100" max="100" title="Total " format="normal" description="Total  of all subjects marks added together.">
            <Value />
        </InputNumber>
        <InputNumber type="int" min="0" max="10000" title="How many students in the class?" format="normal" description="total students">
            <Value>19</Value>
        </InputNumber>
        <InputNumber type="int" min="0" max="100" title="How many subjects are there?" format="normal" description="total subjects">
            <Value>3</Value>
        </InputNumber>
    </Section>
</Student>';


SET @DataXML.modify('insert text{sum(./Student[@version="2"]/Section[@name="Report"]/InputNumber[@description="Marks out of 100"]/Value)} into (./Student[@version="2"]/Section[@name="Report"]/InputNumber[@description="Total  of all subjects marks added together."]/Value)[1]');

SELECT @DataXML;

我们的想法是为这个节点插入text

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(./Student[@version="2"]/Section[@name="Report"]/InputNumber[@description="Total  of all subjects marks added together."]/Value)[1]

文本很简单,这里有几个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sum(./Student[@version="2"]/Section[@name="Report"]/InputNumber[@description="Marks out of 100"]/Value)

我不喜欢使用description标记值来选择节点。如果你有别的办法就更好了。

此外,如果您在SQL表中对这些数据进行规范化,并在将其发送到应用程序之前使用FOR XML子句构建此XML,则会更好。

您可以像这样过滤节点:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SET @DataXML.modify('insert text{sum(./Student[@version="2"]/Section[@name="Report"]/InputNumber[@title="Maths" or @title="Science" or @title="English"]/Value)} into (./Student[@version="2"]/Section[@name="Report"]/InputNumber[@description="Total  of all subjects marks added together."]/Value)[1]');

使用标题:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(./Student[@version="2"]/Section[@name="Report"]/InputNumber[@title="Maths" or @title="Science" or @title="English"]/Value)

最好是添加一种类型的属性并按其进行过滤-例如,添加input type=mark

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61316868

复制
相关文章
jquery grid设置行背景色
项目中有一个需求,可以根据grid中某一列的值来设置该行的背景色,效果如下图所示。
全栈程序员站长
2022/09/14
1.4K0
jquery grid设置行背景色
Java 为 Excel 中的行设置交替背景色
在制作Excel表格时,通过将数据表中上下相邻的两行用不同的背景色填充,可以使各行的数据看起来更清楚,避免看错行,同时也能增加Excel表格的美观度。本文将介绍如何在Java程序中为 Excel 奇数行和偶数行设置交替背景色。
好好学java
2020/04/15
2K0
bootstrap 表格 行背景色
tr,td,th : class active 灰色 success 蓝色 warning 浅黄色 danger 浅红色
用户5760343
2022/01/10
1.3K0
bootstrap 表格 行背景色
ExtJs学习笔记(4)_EditorGridPanel(可编辑的网格控件)
这一节,我们将看到ExtJs功能强大的可编辑网格控件,几乎与VS.Net的GridView功能一样了,但是ExtJs的可是纯JS的UI 一.静态示例(改自ExtJs的官方示例) a.因为我们是采用
菩提树下的杨过
2018/01/24
3.5K0
设置导航栏的背景色和标签栏的背景色
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010105969/article/details/51282200
用户1451823
2018/09/13
2.5K0
CSS设置DIV背景色渐变
FILTER: progid:DXImageTransform.Microsoft.Gradient(gradientType=0, startColorStr=#AC07BD, endColorStr=#f6f6f8); /*IE 6 7 8*/ background: -ms-linear-gradient(top, #AC07BD, #f6f6f8); /* IE 10 */ background:-moz-linear-gradient(top, #AC07BD, #f6f6f8);/
Vicsh
2018/05/16
3K0
typecho设置360智能摘要
按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。
逍遥子大表哥
2021/12/19
3911
typecho设置360智能摘要
Twentytwelve主题文章设置摘要
Twentytwelve是一款简明主题,但首页不能设置文章摘要,简单改动content.php文件一段代码,就可以显示文章摘要。 登录网站后台->外观->主题文件编辑器->找到content.php文件 或者FTP下载修改:路径:wp-content/themes/twentytwelve/content.php 大概40行,找到这一句:
zairun
2022/10/25
4140
pycharm设置背景色及字体_pycharm设置字体
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175345.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/27
1.7K0
Extjs grid设置单元格字体颜色,单元格背景颜色,行背景颜色
1.用GridView中的getRowClass方法来实现颜色的渲染,status是在Store中定义的字段
全栈程序员站长
2022/09/18
3.4K0
Extjs grid设置单元格字体颜色,单元格背景颜色,行背景颜色
ExtJS4中设置tabpanel的tab高度问题
  最近碰到个问题,在ExtJS中应该如何设置tabpanel的tab的高度?因为默认情况下,tab的高度太矮了,以至于tab的标题底部字都被截掉。设置了个tabpanel.minHeight = ‘500’,但是这个仅仅是设置tabpanel的高度,而不是设置tabpanel的每个tab的标题的高度。随后,又改成了minHeight:‘50’,好像效果还是不理想。   如果只是为了每个tab的高度的话,自然tab高度依赖于tabpaenl的高度,tabpanel又依赖于外层组件的高度,如果仅仅把tabpa
hbbliyong
2018/03/05
1.9K0
纯CSS根据图片取色设置背景色
前几天无意间访问到了个韩国的动漫视频站,然后看到个页面每个div背景色都不同疑似根据图片进行的取色,然后就想看看他是用什么js设置的,f12一看发现好像不是js,然后我就以为是写死的,想看看怎么写的,结果一看不要紧,学到个骚操作。
泽泽社长
2023/04/17
1.3K0
纯CSS根据图片取色设置背景色
BCG网格控件单独设置颜色
三,CBCGPGridCtrlColorSingleDlg::OnInitDialog中增加如下代码。
全栈程序员站长
2022/11/09
6820
Eclipse设置背景色和字体大小
一、设置Eclipse代码编辑背景色(保护自己从这里开始) 1、打开window / Preference,弹出Preference面板 2、展开General标签,选中Editors选项,展开。 3、选中 Text Editors,右边出现TestEditors面板。 面板中有这样一个选项:Appearance color options ;其中是各种板块颜色的设置,其中有一项是background color,勾掉System Default,点击’color’,弹出 颜色选择面板,选择喜好的颜
苦咖啡
2018/05/08
3.1K0
iOS UIButton设置高亮状态下的背景色
UIButton一般分为高亮的普通两种状态,原生的方法可以设置这两种不同状态下的文字颜色,文字内容,背景图片,按钮图片。但是不能设置按钮的背景色。
Lee坚武
2019/12/18
1K0
pycharm设置背景色及字体_pycharm字体大小设置不了
点击Font可以选择不同字体,点击Size可以调节字体大小,右侧可以看预览效果,最后点击ok即可。
全栈程序员站长
2022/09/27
1.4K0
pycharm设置背景色及字体_pycharm字体大小设置不了
Extjs 项目中常用的小技巧,也许你用得着(4)---Extjs 中的cookie设置
1.ExtJs设置cookie两种方式 其一:设置cookie如下 saveacct=isForm.getForm().findField('itemselector').getValue(); Ext.util.Cookies.set('saveacct',saveacct);  取cookie中数据如下 var validStatus = Ext.util.Cookies.get("saveacct"); alert(validStatus);  其二:设置cookie var cookie = ne
hbbliyong
2018/03/05
1.3K0
Extjs 项目中常用的小技巧,也许你用得着(4)---Extjs 中的cookie设置
iOS-UIButton设置高亮状态下的背景色
UIButton一般分为高亮的普通两种状态,原生的方法可以设置这两种不同状态下的文字颜色,文字内容,背景图片,按钮图片。但是不能设置按钮的背景色。
Lee坚武
2019/12/13
1.8K0
WPF 如何给 Grid 的某一行添加背景色
其实在 WPF 里面是不存在单独设置 Grid 的某一行的配色,但是想要达到这个视觉效果,可以通过 Border 配合做到
林德熙
2022/08/12
2.5K0
ExtJs四(ExtJs MVC登录窗口的调试)
继上一节中实现了验证码http://www.cnblogs.com/aehyok/archive/2013/04/19/3030212.html,现在我们可以进行对登录界面进行整合调试了。
aehyok
2018/09/11
4.4K0
ExtJs四(ExtJs MVC登录窗口的调试)

相似问题

gem5: X86 KVM全系统支持readfile伪指令

10

LDR伪指令

22

MIPS "la“伪指令

12

翻译mips伪指令'rol‘

30

MIPS中用于除法的伪指令

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文