<?xml version="1.0" encoding="utf-8"?>
<root>
  <left>
  </left>
  <center>
    <div1>
<![CDATA[ <div id="div1"><div> ]]>
    </div1>
  </center>
  <right>
  </right>
</root>通过C# 
先新建div1节点,然后在div1节点写入<![CDATA[ <div id="div1"><div> ]]>public static void XmlInsertHtmlCode(string xmlPath, string MainNode, string Element, string Content)
        {
            XmlDocument objXmlDoc = new XmlDocument();
            objXmlDoc.Load(xmlPath);
            XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
            XmlElement objElement = objXmlDoc.CreateElement(Element);
            objElement.InnerXml = Content;
            objNode.AppendChild(objElement);
            objXmlDoc.Save(xmlPath);
        }1.调用:XmlInsertHtmlCode("xxx.xml","root/center","div1","<div id="div1"><div>");
  我的为什么不行  使用innerxml 得到的结果是<div1><div id="div1"><div></div1>
  而不是 <div1><![CDATA[ <div id="div1"><div> ]]></div1>
2.我该怎么取出 <div1><![CDATA[ <div id="div1"><div> ]]></div1> 中的<div id="div1"><div>两个问题求解,给源码。谢谢~

解决方案 »

  1.   

    net 2.0的XmlDocument不支持,只能用InnerText取得
                string temp2 = @"<?xml version=""1.0"" encoding=""utf-8""?>
    <root>
      <left>
      </left>
      <center>
        <div1>
            <![CDATA[ <div id=""div1""><div> ]]>
        </div1>
      </center>
      <right>
      </right>
    </root>";            XmlDocument doc = new XmlDocument();
                doc.LoadXml(temp2);            XmlNode node2 = doc.SelectSingleNode("/root/center/div1");
                string comment = node2.FirstChild.InnerText;
      

  2.   

    写入用InnerText:
                string temp2 = @"<?xml version=""1.0"" encoding=""utf-8""?>
    <root>
      <left>
      </left>
      <center>
        <div1>
            <![CDATA[ <div id=""div1""><div> ]]>
        </div1>
      </center>
      <right>
      </right>
    </root>";            XmlDocument doc = new XmlDocument();
                doc.LoadXml(temp2);            XmlNode node2 = doc.SelectSingleNode("/root/center/div1");
                string comment = node2.FirstChild.InnerText;            node2.FirstChild.InnerText = @"<div id=""div2""><div>";
      

  3.   

    net 3.5的LinqToXml有XCData 类型
                string temp2 = @"<?xml version=""1.0"" encoding=""utf-8""?>
    <root>
      <left>
      </left>
      <center>
        <div1>
            <![CDATA[ <div id=""div1""><div> ]]>
        </div1>
      </center>
      <right>
      </right>
    </root>";            XDocument doc2 = XDocument.Parse(temp2);
                XElement elment =doc2.Element("root").Element("center").Element("div1");
                XCData comment2 = elment.DescendantNodes().ToList()[0] as XCData;
                comment2.Value = @"<div id=""div2""><div>";
      

  4.   

    楼2、3 使用code  结果是
    <div1>&lt;dl class="baseball" id="div1"&gt;</div1>
      

  5.   

    public static void XmlInsertHtmlCode(string xmlPath, string MainNode, string Element, string Content)
            {
                XmlDocument objXmlDoc = new XmlDocument();
                objXmlDoc.Load(xmlPath);
                XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
                XmlElement objElement = objXmlDoc.CreateElement(Element);
                objElement.InnerXml = Content;
                objNode.AppendChild(objElement);
                objXmlDoc.Save(xmlPath);
            }
    调用 XmlInsertHtmlCode("xxx.xml","root/center","div1","<div id="div1"><div>");
    创建节点div1,div1的值为<div id="div1"><div>,我想储存为
    <div1><![CDATA[ <div id="div1"><div> ]]></div1>
    但是现在是
    <div1>&lt;dl class="baseball" id="div1"&gt;</div1>问题1.我要怎么修改XmlInsertHtmlCode这个方法才能实现?
    问题2.我想取出div1节点的值<div id="div1"><div>,又该怎么实现?
      

  6.   

    有写入app.config的吗?(winform的)
      

  7.   

    CreateCDataSection 方法 
    http://msdn.microsoft.com/zh-cn/library/system.xml.xmldocument.createcdatasection.aspx
      

  8.   

    感谢8楼的方法。
    贴出xml的两个方法
            /// <summary>
            /// 取出节点值
            /// </summary>
            /// <param name="xmlPath">xml url</param>
            /// <param name="Node">root/test</param>
            /// <returns></returns>
            public static string[] XmlGetHtmlCode(string xmlPath,string Node)
            {
                XmlDocument objXmlDoc = new XmlDocument();
                objXmlDoc.Load(xmlPath);            XmlNodeList elemList = objXmlDoc.GetElementsByTagName(Node);
                string[] arraw = new string[elemList.Count];
                for (int i = 0; i < elemList.Count; i++)
                {
                    arraw[i] = elemList[i].InnerXml.ToString().Replace("<![CDATA[", "").Replace("]]>", ""); ;
                }            return arraw;
            }/// <summary>
            /// 插入一节点不带属性,节点值为<![CDATA[
            /// </summary>
            /// <param name="xmlPath">xml url</param>
            /// <param name="MainNode">root/test</param>
            /// <param name="Element">text1</param>
            /// <param name="Content">节点内容</param>
            public static void XmlInsertHtmlCode(string xmlPath, string MainNode, string Element, string Content)
            {
                XmlDocument objXmlDoc = new XmlDocument();
                objXmlDoc.Load(xmlPath);
                XmlNode objNode = objXmlDoc.SelectSingleNode(MainNode);
                XmlElement objElement = objXmlDoc.CreateElement(Element);
                XmlCDataSection CData;
                CData = objXmlDoc.CreateCDataSection(Content);
                objElement.AppendChild(CData);
                objNode.AppendChild(objElement);
                objXmlDoc.Save(xmlPath);
            }
      

  9.   

    XmlInsertHtmlCode("xxx.xml","节点名称")