sHtml=System.Text.StringBuilder(xmlobject);
 
sHtml=sHtml.Replace("&","&");
sHtml=sHtml.Replace("&lt;","<");
sHtml=sHtml.Replace("&gt;",">");这样输出后,为什么xml的Content内容很多都被屏蔽掉了,例如<%%>(asp&asp.net&sql技术文档里面的内容).如果是纯文字倒没有出错,技术文档问题就很多,里面的一些代码在前台都显示不了,在XML的Content字段里面都存在的,就是输出HTML的时候被替换掉了
在网吧上网,代码有些不全,请大家帮忙一下

解决方案 »

  1.   

    可以不用replace ,将特殊字符以cdata标记,输出时指定 disable-output-escaping="yes"
      

  2.   

    能否说的详细点,我xml也是初学不久
      

  3.   

    disable-output-escaping="yes"这个好象不起作用,我有用过!
      

  4.   

    <Article>   
              <ArticleID>5</ArticleID>   
              <UserID>000000</UserID>   
              <src>其他</src>   
              <UserName>admin</UserName>   
              <PostDate>2003-10-8   18:45:07</PostDate>   
              <Title>测试上载文件2</Title>   
              <Content><![CDATA[<P><A   HREF="/WebPub/Data/files/file.gif"   BORDER="0"><IMG   src="/WebPub/file.gif">   file.gif</A>撒大发</P>   
      <P>我们是公产注意接班人</P>   ]]></Content>   
              <RoomID>52</RoomID>   
              <Closed>N</Closed>   
          </Article>   类似这种,但是我的xml是sql生成的,sql里面又不能加<![CDATA[]>???
      

  5.   

    不需要替换.如是你的xml是直接输出的话,那么还是显示的 &amp;&gt;&lt这样的.
    如果你用xsl格式化输出时,可以指定 那么就会显示为 & < > 这样的.简单的例子.
    declare @s varchar(1000)
    set @s='asdf&bb'
    select cast(@s as xml)
    这里就会自动把 & 变为 &amp;了.因为xml中这些是预定义实体, xml数据文件上显示这些其实就是我们对应的字符.
    就好比你认为c#里 bool型为 true false 而在sql里bit类显晃 1和0 一样. 表示法不同而已.当然了,除了上面的方法,你还可以使用ascii码来代替预定义实体输出. #xxxx;
      

  6.   

    恩,谢谢了!现在问题也说不明白,我现在输出的时候,很多技术类文章的代码显示不了,我用sql2005 for xml auto,输出后,&就直接转换成&amp;了,输出到HTML,很多html元素都没有了,不仅仅&
    <xsl:value-of select="article/@Content" disable-output-escaping="yes"></xsl:value-of>这样显示后好象不起作用,我先回家测试一下了!不行的话在发贴谢谢各位
      

  7.   

    Replace("&lt;","<");
    Replace("&gt;",">");
    Replace("&amp;","&");
    这样就好了!晕