这是我的代码:
var nodes = XDocument.Parse(gridxml).Root.Elements();
var attribute = new XAttribute("open", "0");
foreach (var node in nodes)
{
node.Add(attribute);
}
当我在调试模式下检查节点的值时,我看到它们都具有open属性。但是,当我检查gridxml的值时,元素没有open属性。我做错了什么?
答案 0 :(得分:2)
gridxml
是String
,您永远不会修改它。 XDocument
不是对XML友好的String
包装器,它是一个单独的对象,对初始化的String
没有影响。
您应该检查xdoc.ToString()
而不是gridxml
。如果由于某种原因您需要在原始变量中包含更新的内容,请在添加属性后执行gridxml = xdoc.ToString()
。
答案 1 :(得分:0)
您要向节点副本添加属性,请尝试以下方法:
string gridxml = "<node1><node2></node2><node3></node3></node1>";
var xdoc = XDocument.Parse(gridxml);
var attribute = new XAttribute("open", "0");
foreach (var node in xdoc.Root.Elements())
{
node.Add(attribute);
}
Console.WriteLine(xdoc.ToString());