2011-01-07 3 views
1

J'ai ceci:Comment ajouter un élément à un document 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> 

Et je dois ajouter un élément à XML avec des informations différentes en utilisant (C# et ASP.net) il donc ressembler à ceci:

<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> 

Comment puis-je faire cela?

+0

Vous devez préciser un peu la question, votre avant et après sont exactement les mêmes et ni XML formé correctement – MrEyes

+0

Qu'est-ce que cela a à voir avec C# ou ASP.NET? –

Répondre

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(); 

Ou, pour une version plus concise:

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(); 
0

Vous pouvez également ajouter des nœuds au DOM directement.

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); 
Questions connexes