求助求助求助!XML大神请进!

逆光Titii 2019-02-21 11:38:16
现在跟对方做接口对接,对方要求参数用字符类型的Xml报文传递,如下:

根据实体序列化成Xml,目前已经生成了这样:


在类的抬头添加了[XmlType("R")]标识后,只生成了:

不能有重复的标识命名,所以仅能生成一个R。。。 这样仅仅靠XmlType标识是肯定不对的

最终的要求是生成这样:


每个BorrowComNumList里头只有BorrowComNum一个节点,R0、R1、R2、R3...是根据List的多少循环生成的,将BorrowComNum包裹进去。这个Rx节点不知道如何循环生成,实在是没招了,特地来此请求大神帮忙。(另外,XML_ROOT、Head、Body都是必须要的)

好久没玩XML了,困扰多时,不知如何下手,请求大神指点一二,感激不尽!
...全文
298 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
圣殿骑士18 2019-02-22
  • 打赏
  • 举报
回复
跟对方做接口,那是很灵活的要求了,不适合用直接序列化导出的。

直接写入xml更方便。使用XmlDocument。

==========
欢迎关注微信公众号 “产品技术知与行” ,打造全面的结构化知识库,包括原创文章、免费课程(C#,Java,Js)、技术专题、视野知识、源码下载等内容。
最新文章:解读经典《C#高级编程》 第四章之继承.接口 https://mp.weixin.qq.com/s/fO4C0WAYZUJYEvKJiBCuVA


逆光Titii 2019-02-22
  • 打赏
  • 举报
回复
问题已经解决了 谢谢楼上回答的各位道友
逆光Titii 2019-02-22
  • 打赏
  • 举报
回复
引用 3 楼 娃都会打酱油了 的回复:
上面的只是给参考


OK 问题已经解决了 自己研究了半天 又参考您的回答 谢谢
极客诗人 2019-02-22
  • 打赏
  • 举报
回复
XmlDocument 了解一下
逆光Titii 2019-02-21
  • 打赏
  • 举报
回复
在类的抬头添加了[XmlType("R")]标识后,只生成了:


不能有重复的标识命名,所以仅能生成一个R。。。 这样仅仅靠XmlType标识是肯定不对的
assky124 2019-02-21
  • 打赏
  • 举报
回复
看了半天不知道,你表达的是啥,源的Model定义,目标XML是啥贴一下。 标准的XML序列化不行的话,可以自己拼,XMLDocument了解下
  • 打赏
  • 举报
回复
上面的只是给参考
  • 打赏
  • 举报
回复
linq2xml,或者自己定义如何生成xml吧
public static string GetRequestXml(IRequest header, IRequest body, Encoding encoding, bool addtionAttr = true)
        {
            using (MemoryStream ms = new MemoryStream())
            {
                XmlWriterSettings settings = new XmlWriterSettings();
                //settings.OmitXmlDeclaration = true;
                settings.Encoding = new UTF8Encoding(false);
                settings.Indent = true;
                using (XmlWriter sw = XmlWriter.Create(ms, settings))
                {
                    //package_type = "xml" encoding = "UTF-8"
                    sw.WriteStartDocument();
                    sw.WriteStartElement("service");
                    if (addtionAttr)
                    {
                        sw.WriteAttributeString("package_type", "xml");
                        sw.WriteAttributeString("encoding", "UTF-8");
                    }
                    sw.FillStreamWriter("sys-header", header);
                    sw.FillStreamWriter("body", body);
                    sw.WriteEndElement();
                    sw.WriteEndDocument();
                    sw.Flush();
                }
                ms.Close();
                return encoding.GetString(ms.ToArray()).Trim();
            }
        }
        private static void FillStreamWriter(this XmlWriter sw, string elementName, IRequest request)
        {
            sw.WriteStartElement(elementName);
            var collection = request?.ToCollection();
            if (collection != null)
            {
                foreach (string key in collection)
                {
                    sw.WriteElementString(key, collection[key]);
                }
            }
            sw.WriteEndElement();
        }

110,502

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧