将属性添加到现有xml的xelements

时间:2015-03-05 14:40:53

标签: c# xml

这是我的代码:

var nodes = XDocument.Parse(gridxml).Root.Elements();
                    var attribute = new XAttribute("open", "0");
                    foreach (var node in nodes)
                    {
                        node.Add(attribute);
                    }

当我在调试模式下检查节点的值时,我看到它们都具有open属性。但是,当我检查gridxml的值时,元素没有open属性。我做错了什么?

2 个答案:

答案 0 :(得分:2)

您示例中的

gridxmlString,您永远不会修改它。 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());