我的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。
答案 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() });
}
}
}