首页 新闻 会员 周边

c#生成另一个xml。

0
悬赏园豆:20 [已关闭问题] 关闭于 2015-08-20 21:07

xml A

<a>
    <item>
        <name>张三</name>
        <code>1</code>
    </item>
    <item>
        <name>李四</name>
        <code>2</code>
    </item>
    <item>
        <name>王五</name>
        <code>3</code>
    </item>
    <item>
        <name>赵四</name>
        <code>4</code>
    </item>
    <item>
        <name>王二麻子</name>
        <code>5</code>
    </item>
</a>

生成xml B

<b>
    <items>
        <item>
            <name1>张三</name1>
            <code1>1</code1>
            <name2>李四</name2>
            <code2>2</code2>
        </item>
        <item>
            <name1>王五</name1>
            <code1>3</code1>
            <name2>王二麻子</name2>
            <code2>4</code2>
        </item>
    </items>
</b>

XML A中的两个item 一组加到xml b中一个item下。求解。

xml
知识青年下乡去的主页 知识青年下乡去 | 初学一级 | 园豆:6
提问于:2015-08-20 00:06
< >
分享
所有回答(5)
0

会解析xml么,可以解析后,二个item一组生成到b.xml中。

火悬崖 | 园豆:434 (菜鸟二级) | 2015-08-20 08:44
1

1.新建一个类包含字段 name 和 code

2.使用linq to xml技术实现a.xml文件的读取将读取的存储在数组或者列表或者你喜欢的方式,然后根据需要选择合适的写入b.xml

visonme | 园豆:1674 (小虾三级) | 2015-08-20 09:40

其实就是写入B.xml有问题。因为都是需要创建生成结构的。所以循环没有想明白。

支持(0) 反对(0) 知识青年下乡去 | 园豆:6 (初学一级) | 2015-08-20 11:15
0

用System.Xml.XmlDocument解析然后再组合就好了

小白菜T | 园豆:564 (小虾三级) | 2015-08-20 11:02
0

主要考察点:xml序列化和xml反序列化

唯我独萌 | 园豆:537 (小虾三级) | 2015-08-20 17:27
0

 string xml = @"<a>
                        <item>
                            <name>张三</name>
                            <code>1</code>
                        </item>
                        <item>
                            <name>李四</name>
                            <code>2</code>
                        </item>
                        <item>
                            <name>王五</name>
                            <code>3</code>
                        </item>
                        <item>
                            <name>赵四</name>
                            <code>4</code>
                        </item>
                        <item>
                            <name>王二麻子</name>
                            <code>5</code>
                        </item>
                        </a>";
            XElement root = XElement.Parse(xml);
            var eles = root.Elements("item");
            XElement cEle = new XElement("items");
            XElement newRoot = new XElement("b", cEle);
            for (var i = 0; ; i += 4)
            {
                var tmp = eles.Skip(i).Take(4).SelectMany(x => x.Elements());
                var idx = 0;
                foreach (XElement e in tmp)
                {
                   
                    var num = idx / 2 + 1;
                    e.Name = string.Format("{0}{1}", e.Name, num);
                    idx++;
                }
                //不用上面一段,用这段会很神奇,第一个name会变成11结尾
                //tmp = tmp.Select((y, idx) =>
                //{
                //    var num = idx / 2 + 1;
                //    y.Name = string.Format("{0}{1}", y.Name, num);
                //    return y;
                //});
                //Console.WriteLine(tmp.Count());
                if (!tmp.Any())
                {
                    break;
                }
                var tmpEle = new XElement("item", tmp);
                cEle.Add(tmpEle);
            }
            Console.WriteLine(newRoot);
            Console.ReadLine();

知识青年下乡去 | 园豆:6 (初学一级) | 2015-08-20 21:06
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册