обновление CDATA в xml - PullRequest
       4

обновление CDATA в xml

3 голосов
/ 13 июля 2010

У меня есть XML-файл, который содержит CDATA

Мне нужно обновить 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>

Я использую Framework 2.0 .. как это сделать с помощью xmldocument.

спасибо

Ответы [ 3 ]

5 голосов
/ 13 июля 2010

Просто получите 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);
    }
}
4 голосов
/ 13 июля 2010

Вам нужно будет извлечь cdata как обычную строку, а затем настроить ее, используя обычные строковые операции (или регулярное выражение) перед повторной вставкой в ​​качестве cdata.Такова природа разделов cdata.

1 голос
/ 14 октября 2014

c # 2.0

Эта строка обновляет внутренний текст CDATA

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...