updating CDATA in xml
i have xml file which contains CDATA
i need to update the CDATA as like in this example.
i am modifying "span" here
<elements>
<![CDATA[-div[id|dir|class|align|style],-span[class|align]]]>
</elements>
should be updated as
<elements>
<![CDATA[-div[id|dir|class|align|style],-span[class|align|style]]]>
</elements>
i am using开发者_运维百科 framework 2.0.. how to do this using xmldocument.
thank you
Just fetch the XmlCDataSection
and change the Value
property. Here's an example which admittedly uses LINQ to find the CData section, but the principle of changing it would be the same:
using System;
using System.Linq;
using System.Xml;
class Test
{
static void Main(string[] args)
{
string xml =
@"<elements>
<![CDATA[-div[id|dir|class|align|style],-span[class|align]]]>
</elements>";
XmlDocument doc = new XmlDocument();
doc.LoadXml(xml);
XmlCDataSection cdata = doc.DocumentElement
.ChildNodes
.OfType<XmlCDataSection>()
.First();
cdata.Value = "-div[id|dir|class|align|style],-span[class|align|style]";
doc.Save(Console.Out);
}
}
You will need to extract the cdata as a regular string, then adjust it using normal string operations (or a regex) before re-inserting as cdata. That is the nature of cdata sections.
c# 2.0
This line updates the CDATA InnerText
xmlDoc.DocumentElement.SelectSingleNode("//elements").FirstChild.Value =
"-div[id|dir|class|align|style], span[class|align|style]";
Full code
string xmlPath = @"C:\yourFolder\yourFile.xml";
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
xmlDoc.DocumentElement.SelectSingleNode("//elements").FirstChild.Value =
"-div[id|dir|class|align|style], span[class|align|style]";
xmlDoc.Save(xmlPath);
精彩评论