且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将CData部分添加到C#中的现有xml字符串

更新时间:2023-11-02 12:21:10





使用XM的WriteCData方法LWriter课程。





Hi,

use the WriteCData method of the XMLWriter class.


using (XmlWriter writer = XmlWriter.Create("employees.xml"))
{
    writer.WriteStartElement("ContactID");
    writer.WriteCData(data);
    writer.WriteEndElement();
}





希望它有所帮助。



Valery。



hope it helps.

Valery.


public string InsertCDATASections(DataSet ds, string[] cdataSections)
   {
       //Convert to XML with expanded general entities and CDATA sections
       //as appropriate
       XmlValidatingReader reader = null;
       XmlTextWriter writer = null;
       StringWriter sw = null;
       Array.Sort(cdataSections);
       try
       {
           reader = new XmlValidatingReader(ds.GetXml(), XmlNodeType.Document, null);
           sw = new StringWriter();
           writer = new XmlTextWriter(sw);
           writer.Formatting = Formatting.Indented;
           reader.ValidationType = ValidationType.None;
           reader.EntityHandling = EntityHandling.ExpandCharEntities;
           string currentElement = String.Empty;
           while (reader.Read())
           {
               switch (reader.NodeType)
               {
                   case XmlNodeType.Element:
                       currentElement = reader.Name;
                       writer.WriteStartElement(currentElement);
                       while (reader.MoveToNextAttribute())
                       {
                           writer.WriteAttributeString(reader.Name, reader.Value);
                       }
                       break;
                   case XmlNodeType.Text:
                       if (Array.BinarySearch(cdataSections, currentElement) < 0 && cdataSections.Length > 0 )
                       {
                           writer.WriteString(reader.Value);
                       }
                       else
                       {
                           writer.WriteCData(reader.Value);
                       }
                       break;
                   case XmlNodeType.EndElement:
                       writer.WriteEndElement();
                       break;
                   default:
                       break;
               }
           }
       }
       catch (Exception exp)
       {
           return exp.Message;
       }
       finally
       {
           reader.Close();
           writer.Close();
       }
       return sw.ToString();
   }





示例:



Example:

DataSet ds = new DataSet();
string[] sections = new string[]{};

string xml = InsertCDataSections(ds, sections);