public void GetAllNodes(XmlNodeList node, XmlWriter writer)
        {
            foreach (XmlNode xn in node)
            {
                if (!xn.HasChildNodes)
                {
                    string content = xn.ParentNode.InnerXml;
                    if (content.Contains("~!dbwbook name=\"标注\""))
                    {
                        content = content.Replace("~!dbwbook name=\"标注\"", "<标注");
                        content = content.Replace("!~!", ">");
                        if (content.Contains("~!/dbwbook!~"))
                        {
                            content = content.Replace("~!/dbwbook!~", "</标注>");
                        }
                    }     
                    writer.WriteString(content);
                }
                else
                {
                    this.rdint += 1;
                    string ssid = sid + rdint.ToString(); 
                    writer.WriteStartElement(xn.Attributes[0].Value);
                    writer.WriteAttributeString("id", ssid);
                     writer.WriteEndElement();                   
                }
            }
        }我现在要将文本中的"~!dbwbook name="标注"标记写入XML中,改为<标注 ....>,
将~!/dbwbook!~写入XML文件中,改为</标注>,但转换结果:将&lt;标注 commentid="3"&gt;著名的北方大川松花江和乌苏里江尽揽怀&lt;/标注&gt;中之后,<,>都被转换为&lt;,这是XML转义符,请问大家如何不让它转义,我就要<,>符号???谢谢大家!!!

解决方案 »

  1.   

     & 的转义序列为 & amp 或 & #38;
       < 的转义序列为 & lt; & #60;
       > 的转义序列为 & gt; & #62;
      

  2.   

    XML转义字符
    &lt; <   
    &gt; >   
     <![CDATA[...]]> 的内容不会被作为Xml解析
      

  3.   

    如果非要显示<>,那就直接把<标注></标注>当成一个节点保存在XML文件中
    否则就放入CDATA区或者取出来时再转义
      

  4.   

    <![CDATA[输入的内容 《》<<><><><><><><>&]]> 
      

  5.   

    就要<,>符号???
    xml规范有格式要求,你只有2种选择方法,换成&lt; 是必须的,或者放在<![CDATA[<>""""任何内容]]> 使用的一段是可以解析到的。你如果非要使用<>,就会被看成xml的节点,你采取插入节点的方法就可以啊,WriteStartElement
      

  6.   

    顶8#的
      要使用<>,就会被看成xml的节点,你采取插入节点的方法就可以啊 用innerxml
      

  7.   

    C#我不太清楚,JAVA代码如下:
    CDATA cdata = new CDATA("<标注 ....>");
    element.addContent(cdata);