在xdocument中的其他属性之前添加属性

时间:2016-01-12 08:53:14

标签: c# xml

我的xdocument以下。

<setup name="NEW">
    <master comment="" gui_namewidth="160" gui_valwidth="40" name="MASTER" type="u8">
        <item comment="" name="Name" value="0"/>
    </master>
    <enum comment="" gui_namewidth="160" gui_valwidth="40" name="Name" type="u8">
        <item comment="" name="1" value="0"/>
    </enum>
</setup>

现在我想向crc节点添加新属性setup,此CRC应该是属性列表I.e中的第一个属性。生成的xdocument应该看起来像这样

<setup CRC = "0x1244343" name="NEW">
    <master comment="" gui_namewidth="160" gui_valwidth="40" name="MASTER" type="u8">
        <item comment="" name="Name" value="0"/>
    </master>
    <enum comment="" gui_namewidth="160" gui_valwidth="40" name="Name" type="u8">
        <item comment="" name="1" value="0"/>
    </enum>
</setup>

向后兼容性需要添加第一个属性,这将计算与以前一样的父节点的CRC。

1 个答案:

答案 0 :(得分:1)

试试这个

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
using System.Xml.Linq;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            string xml =
                "<setup name=\"NEW\">" +
                    "<master comment=\"\" gui_namewidth=\"160\" gui_valwidth=\"40\" name=\"MASTER\" type=\"u8\">" +
                        "<item comment=\"\" name=\"Name\" value=\"0\"/>" +
                    "</master>" +
                    "<enum comment=\"\" gui_namewidth=\"160\" gui_valwidth=\"40\" name=\"Name\" type=\"u8\">" +
                        "<item comment=\"\" name=\"1\" value=\"0\"/>" +
                    "</enum>" +
                "</setup>";


            XDocument doc = XDocument.Parse(xml);
            XElement setup = doc.Element("setup");
            setup.ReplaceAttributes(new object[] { new XAttribute("CRC", "0x1244343"), setup.Attributes() });
        }
    }
}