在xml中更新CDATA

时间:2010-07-13 06:40:44

标签: c# xml xmldocument

我有包含CDATA的xml文件

我需要更新CDATA,就像在这个例子中一样。

我在这里修改“span”

<elements>
    <![CDATA[-div[id|dir|class|align|style],-span[class|align]]]>
  </elements>

应更新为

<elements>
    <![CDATA[-div[id|dir|class|align|style],-span[class|align|style]]]>
  </elements>

我使用的是框架2.0 ..如何使用xmldocument。

谢谢

3 个答案:

答案 0 :(得分:5)

只需获取XmlCDataSection并更改Value属性即可。这是一个肯定使用LINQ来查找CData部分的例子,但改变它的原则是相同的:

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

答案 1 :(得分:4)

您需要将cdata解压缩为常规字符串,然后在重新插入cdata之前使用普通字符串操作(或正则表达式)进行调整。这就是cdata部分的本质。

答案 2 :(得分:1)

c#2.0

此行更新CDATA InnerText

xmlDoc.DocumentElement.SelectSingleNode("//elements").FirstChild.Value  = 
    "-div[id|dir|class|align|style], span[class|align|style]";

完整代码

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