繁体   English   中英

在xml中更新CDATA

[英]updating CDATA in xml

我有包含CDATA的xml文件

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

我在这里修改“跨度”

<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这样做。

谢谢

只需获取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);
    }
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM