首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • sql2005 输出XML后ASP.NET 的字符替换问题 [已结贴,结贴人:nighting1029]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-08 13:03:05 楼主
    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的时候被替换掉了
    在网吧上网,代码有些不全,请大家帮忙一下

    20  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-08 13:07:581楼 得分:15
    可以不用replace ,将特殊字符以cdata标记,输出时指定 disable-output-escaping="yes"
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-08 13:10:122楼 得分:5
    disable-output-escaping="yes"
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-08 13:15:313楼 得分:0
    能否说的详细点,我xml也是初学不久
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-08 13:16:244楼 得分:0
    disable-output-escaping="yes"这个好象不起作用,我有用过!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-08 13:22:415楼 得分:0
    <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[]>???
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-08 13:27:316楼 得分:0
    不需要替换.

    如是你的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;

    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-08 13:44:067楼 得分:0
    恩,谢谢了!现在问题也说不明白,

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

    谢谢各位
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    发表于:2008-03-09 08:52:558楼 得分:0
    Replace("&lt;"," <");
    Replace("&gt;",">");
    Replace("&amp;","&");
    这样就好了!晕
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved