xml传参

前端调用后端方法时要传递多个参数,在前端js中拼接xml形式的字符串:

 1 var args = "<?xml version=‘1.0‘ encoding=‘utf-8‘ ?>";
 2 args += "<Bill>";
 3 for (var i = 0; i < dataChange.length; i++) {
 4     if (dataChange[i].bghsl != undefined) {
 5         if (dataChange[i].gcsl != undefined)
 6             args += "<Item PrimaryKey = ‘" + data.items[i].data.gxid + "‘ SSBM = ‘" + data.items[i].data.ssbm + "‘ BillCode = ‘" + data.items[i].data.qdbh + "‘ ProCount = ‘" + dataChange[i].gcsl + "‘ />";
 7         else
 8             args += "<Item PrimaryKey = ‘" + data.items[i].data.gxid + "‘ SSBM = ‘" + data.items[i].data.ssbm + "‘ BillCode = ‘" + data.items[i].data.qdbh + "‘ ProCount = ‘" + 0 + "‘ />";
 9     }
10 }
11 args += "</Bill>";

后端接收参数并解析:

 1 protected override string UpdateProCount(string strXml)
 2 {
 3     XmlDocument doc = new XmlDocument();
 4     doc.LoadXml(strXml);
 5     XmlElement root = doc.DocumentElement;
 6
 7     StringBuilder strSql = new StringBuilder();
 8     StringBuilder strqd = new StringBuilder();
 9     foreach (XmlElement item in root.ChildNodes)
10     {
11         strSql.AppendFormat("update T_JJJ_JGBWQDGX set F_GCSL={0},F_BGHSL = isnull(F_BGSL,0) + {0},F_BGHJE = (isnull(F_BGSL,0) + {0}) * F_BGHDJ ", item.GetAttribute("ProCount"));
12         strSql.AppendFormat("where F_ID = {0};", item.GetAttribute("PrimaryKey"));
13         strqd.AppendFormat("‘{0}‘,", item.GetAttribute("BillCode"));
14     }
15     int resault = GSqlDataAccess.ExecuteNonQuery("default", strSql.ToString(), null);
16     if (resault == 0)
17         return "保存失败!";
18     else
19     {
20         string fid = root.FirstChild.Attributes["PrimaryKey"].Value;
21         strSql.Clear();
22         string tmp = strqd.ToString();
23         strSql.Append("declare @BDBH number(19,0);");
24         strSql.AppendFormat("select @BDBH = F_BDBH from T_JJJ_SGGCLQDFJ where F_ID = (select F_SGGCLQDFJ_ID from T_JJJ_JGBWQDGX where F_ID = {0});", fid);
25         strSql.Append("select sum(F_GCSL) as CountSum,F_QDBH,F_BDBH from T_JJJ_SGGCLQDFJ ");
26         strSql.Append("inner join T_JJJ_JGBWQDGX on T_JJJ_SGGCLQDFJ.F_ID = T_JJJ_JGBWQDGX.F_SGGCLQDFJ_ID ");
27         strSql.AppendFormat("where T_JJJ_SGGCLQDFJ.F_BDBH = @BDBH and F_QDBH in {0} group by F_QDBH,F_BDBH ", "(" + tmp.Substring(0, tmp.Length - 1) + ")");
28         IDataReader reader = GSqlDataAccess.SelectReader("default", strSql.ToString(), null);
29         strSql.Clear();
30         while (reader.Read())
31         {
32             strSql.AppendFormat("update T_JJJ_SGHTGCLQD set F_HLSL = {0}, ", reader["CountSum"].ToString() == "" ? "0" : reader["CountSum"].ToString());
33             strSql.AppendFormat("F_HLJE = {0} * (isnull(F_HTDJ,F_BGHDJ)) ", reader["CountSum"].ToString() == "" ? "0" : reader["CountSum"].ToString());
34             strSql.AppendFormat("where F_CODE = ‘{0}‘ and F_SSBM = {1};", reader["F_QDBH"].ToString(), reader["F_BDBH"].ToString());
35         }
36         reader.Dispose();
37         resault = GSqlDataAccess.ExecuteNonQuery("default", strSql.ToString(), null);
38         if (resault > 0)
39
40             return "保存成功!";
41
42         else
43             return "保存失败!";
44     }
45 }
时间: 2024-12-28 18:09:29

xml传参的相关文章

SQL Server 存储过程解析XML传参 参考方案

1.定义存储过程 -- =============================================--定义存储过程-- =============================================CREATE PROCEDURE [dbo].[UpdateT] -定义xml参数 @xml xmlASBEGINSET NOCOUNT ON; DECLARE @xmlHandle int --输出参数 EXEC sp_xml_preparedocument @xmlHa

在.net core上,Web网站调用微信支付-统一下单接口(xml传参)一直返回错误:mch_id参数格式错误

这是 微信支付-统一下单 接口文档 一.问题描述 在调用统一下单接口时,报mch_id参数格式错误,但商户ID确实是10位数字正确的,可就是一直报这个错误 返回的错误xml如下: 二.排错过程 1.多次对比官网xml格式,确认生成的xml是否有误 2.检查生成的xml是否带有空格.字段是否拼写有误,检查生成的xml是否有缺少或多字符 官方的xml: 我开发过程中生成的xml: 对比发现,我生成的xml参数比官方的参数多了CDATA等着字符,但CDATA标签是用于说明数据不被XML解析器解析的,不

【转】Sql Server参数化查询之where in和like实现之xml和DataTable传参

转载至: http://www.cnblogs.com/lzrabbit/archive/2012/04/29/2475427.html 在上一篇Sql Server参数化查询之where in和like实现详解中介绍了在Sql Server使用参数化查询where in的几种实现方案,遗漏了xml和表值参数,这里做一个补充 文章导读 方案5使用xml参数 方案6 使用表值参数TVP,DataTable传参 6种实现方案总结 方案5 使用xml参数 对sql server xml类型参数不熟悉的

spring jdbc传参及处理查询

传参有两种传参方式,一种直接传,一种通过对象传. 查询返回值,可以直接封进对象. public class springJdbcTest { private static JdbcTemplate jdbcTemplate; private static String uuid; @BeforeClass public static void init(){ ApplicationContext context = new ClassPathXmlApplicationContext("/spr

jsp的url后跟中文参数传参出现乱码

①重新编码:String urlParam= request.getParameter("urlParam");  urlParam= new String(urlParam.getBytes("ISO-8859-1"), "UTF-8"); ②tomcat中统一编码 tomcat  的server.xml中在相对应的端口中加下面两句useBodyEncodingForURI="true" URIEncoding="

Android学习之Activity传参

一.传参的三种方法 场景分两步: 1.从第一个Activity传递参数到第二个Activity,接受并显示. 2.第二个Activity文本框输入信息,并传到第一个Activity. 传参前需要先定义Intent Intent i=new Intent(MainActivity.this,TheAty.class);//参数一当前Activity,参数二跳转Activity 传参的集中方法 1.putExtra 类似是键值对,第二个参数可以传不同类型的值 a)赋值 i.putExtra("dat

页面传参中文乱码解决方案

jsp页面传递参数到servlet,只要参数有中文就是乱码,大多数是??????乱码,尝试了网上比较普遍的好多种办法都不行,最后加了一句话解决掉,分享给大家. 1.打开tomcat安装目录 2.找到conf文件夹 3.打开里面的server.xml 4.找到 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443

action之间传参为中文;type=&#39;redirect&#39;和 type=&#39;redirectAction&#39;主要区别

摘录自:http://blog.csdn.net/lhi705/article/details/7446156 [html] view plain copy print? Struts2中action之间传参中文乱码的问题 解决方法一(已经验证,可以): 两个action都定义要传的参数属性的get和set方法,必须相同! 在struts.xml中定义: <result name="input" type="redirect"> <param na

Fragment解析创建和传参,动态添加fragment

一下是个人的一些总结. 为fragment创建XML <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <