如何将元素添加到XML文档?

时间:2011-01-07 01:00:23

标签: c# asp.net xml

我有这个:

<dockmenu>    
<photo image="images/4runner-sr5.jpg" url="www.example.com" target="_blank"><![CDATA[4Runner]]></photo>    
<photo image="images/4runner.jpg" url="www.example.com" target="_blank"><![CDATA[4Runner<br>Dock Beautiful]]></photo>    
</dockmenu>

我需要使用(C#和ASP.net)向xml添加一个不同信息的元素 所以它看起来像这样:

<dockmenu>
<photo image="images/4runner-sr5.jpg" url="www.example.com" target="_blank"><![CDATA[4Runner]]></photo>    
<photo image="images/4runner.jpg" url="www.example.com" target="_blank"><![CDATA[4Runner<br>Dock Beautiful]]></photo>    
<photo image="images/new.jpg" url="www.new.com" target="_blank"><![CDATA[New]]></photo>    
</dockmenu>

我该怎么做?

2 个答案:

答案 0 :(得分:2)

LINQ to XML:

var text = @"<dockmenu>    
<photo image=""images/4runner-sr5.jpg"" url=""www.example.com"" target=""_blank""><![CDATA[4Runner]]></photo>    
<photo image=""images/4runner.jpg"" url=""www.example.com"" target=""_blank""><![CDATA[4Runner<br>Dock Beautiful]]></photo>    
</dockmenu>";
var dockMenu= XElement.Parse(text);
var photo = new XElement("photo");
photo.SetAttributeValue("image", "images/new.jpg");
photo.SetAttributeValue("url", "www.new.com");
photo.SetAttributeValue("target", "_blank");
photo.Add(new XCData("New"));
dockMenu.Add(photo);
var newText = dockMenu.ToString();

或者,更简洁的版本:

var dockMenu= XElement.Parse(text);
dockMenu.Add(
    new XElement("photo",
        new XAttribute("image", "images/new.jpg"),
        new XAttribute("url", "www.new.com"),
        new XAttribute("target", "_blank"),
        new XCData("New")));
var newText = dockMenu.ToString();

答案 1 :(得分:0)

您还可以直接向DOM添加节点。

XmlDocument doc = new XmlDocument();
var text = @"<dockmenu>    
                <photo image=""images/4runner-sr5.jpg"" url=""www.example.com"" target=""_blank""><![CDATA[4Runner]]></photo>    
                <photo image=""images/4runner.jpg"" url=""www.example.com"" target=""_blank""><![CDATA[4Runner<br>Dock Beautiful]]></photo>    
             </dockmenu>";
doc.LoadXML(text);
XmlNode newChild = doc.CreateElement("photo");
XmlAttribute image = doc.CreateAttribute("image");
image.Value = "images/new.jpg";
newChild.Attributes.Append(image); 

XmlAttribute url = doc.CreateAttribute("url");
url.Value = "www.new.com";
newChild.Attributes.Append(url); 

XmlAttribute target = doc.CreateAttribute("target");
target.Value = "_blank";
newChild.Attributes.Append(target); 

XmlNode root = doc.SelectSingleNode("//dockmenu");
root.AppendChild(newChild);