使用LINQ和XElement将CSV转XML时如何删除重复Header标签
问题原因
你当前的代码嵌套创建了两层标签:外层先实例化了名为header的根节点,又将LINQ查询返回的Header元素作为它的子节点,所以最终输出会出现两层嵌套结构。
解决方法
如果你的source集合中仅包含1条头部CSV记录,直接提取第一条记录拆分字段,创建单个Header节点即可,修改后代码如下:
// 提取第一条CSV行拆分字段 var fields = source.First().Split('|'); XElement header = new XElement("Header", //new XAttribute("CustomerID", fields[0]), new XElement("FileId", fields[1]),//da calcolare new XElement("SenderId", fields[2]), new XElement("ProcessingDate", DateTime.Now.ToString("yyyyMMdd")), new XElement("ProcessingTime", DateTime.Now.ToString("HHmm")) );
运行上述代码后生成的XML结构如下:
<Header> <FileId>00476170246</FileId> <SenderId>TEST</SenderId> <ProcessingDate>20210819</ProcessingDate> <ProcessingTime>1825</ProcessingTime> </Header>
补充说明
如果生成的Header标签自带xmlns=""空命名空间属性,是因为该节点的命名空间和它的父节点命名空间不匹配,创建XElement时传入和父节点一致的XNamespace参数即可消除该属性。
内容的提问来源于stack exchange,提问作者Fabio V.
相关产品推荐
相关产品推荐

