locked
XML格式传输带尖括号的数据的问题 RRS feed

  • 问题

  • 使用TinyMce的innerHTML属性获得值如下:
    <strong>测试</strong>
    但这样的值不能在XML格式的数据里传输。
    我想获得的代码是这样的:&lt;strong&gt;测试&lt;strong&gt;
    请问有什么样的方法可以得到上述代码?
    做最好的自己
    2009年9月4日 16:42

答案

  • 您好,试试:
    String EncodedString = Server.HtmlEncode("<strong>测试</strong>");
    2009年9月6日 3:41
  • 传输的方法有2种,
    1,将<strong>测试</strong>放在<![CDATA[ <strong>测试</strong> ]]>节点里面
    2,将"'&<>5个字符进行替换成&quot;&apos;&amp;&lt;&gt;即可

    【孟子E章】
    2009年9月6日 13:07
  • str.Replace("&","&amp;");
    str.Replace("\"","&quot;");
    str.Replace("'","&apos;")
    str.Replace("<","&ltt;")
    str.Replace(">","&gtt;")

    【孟子E章】
    2009年9月7日 4:56
  • 晕,直到现在我才明白原来是要在js中操作。
    c#中也可以用var来定义变量!对于一些runat=server的html控件也会有InnerHTML属性!还以为document是您自己写的类

    js中的replace的参数是正则表达式。具体请参考:http://msdn.microsoft.com/en-us/library/efy6s3e6.aspx
    例如
    var textString = "<p>美丽的一天从现在开始</p><div>从我开始</div>";
    var re = /</g
    var dd = cc.replace(re, "&ltt;")
    就可以把所有的<替换了。

    2009年9月9日 13:36

全部回复

  • 微软论坛使用的是TinyMCE,也是用Ajax,微软是怎么做的呢?
    做最好的自己
    2009年9月6日 0:34
  • 您好,试试:
    String EncodedString = Server.HtmlEncode("<strong>测试</strong>");
    2009年9月6日 3:41
  • 传输的方法有2种,
    1,将<strong>测试</strong>放在<![CDATA[ <strong>测试</strong> ]]>节点里面
    2,将"'&<>5个字符进行替换成&quot;&apos;&amp;&lt;&gt;即可

    【孟子E章】
    2009年9月6日 13:07
  • 请问您所说的第2中方法应该怎么做啊?
    做最好的自己
    2009年9月7日 4:49
  • str.Replace("&","&amp;");
    str.Replace("\"","&quot;");
    str.Replace("'","&apos;")
    str.Replace("<","&ltt;")
    str.Replace(">","&gtt;")

    【孟子E章】
    2009年9月7日 4:56
  • 您好,
    我按照您的方法测试下面代码:

    var textString = "<p>美丽的一天从现在开始</p><div>从我开始</div>";
    var aa = textString.replace("&", "&amp;");
    var bb = aa.replace("\"", "&quot;");
    var cc = bb.replace("'", "&apos;")
    var dd = cc.replace("<", "&ltt;")
    var ee = dd.replace(">", "&gtt;")
    document.write(ee);

    测试的结果为
    &ltt;p&gtt;美丽的一天从现在开始</p><div>从我开始</div>

    它只把前面的替换了,后面的没有被替换。
    请问应该怎么改改啊?


    做最好的自己
    2009年9月8日 15:58
  • 您好,您用我介绍的方法直接就可转换,前提是在asp.net下写那段代码。
    如果单独建立类库,可以引用一下System.Web.dll,然后调用String EncodedString = HttpUtility.HtmlEncode("<strong>测试</strong>");

    另,Repalce方法是将所有匹配的数据都替换的,您可以单步跟踪一下看问题出在哪了。先看第一次替换的结果。
    document.write(ee)是哪个类的方法?会不会问题出在这,还是先设断点看未执行document.write(ee)前的ee是什么值?
    2009年9月8日 16:28
  • 我想在客户端就将文本进行编码,然后以XML的形式传到服务器解析。您的方法的确没问题,但对于我的情况不是很合适。如果将您说的做成WebService,再用Ajax调用WebService也是一种方法,不过我现在希望找到一种可以在客户端通过js实现的方法。
    document.write()是document对象的方法。个人认为这个方法在实现效果上和.net中的Response.Write()方法类似。
    做最好的自己
    2009年9月9日 12:49
  • 晕,直到现在我才明白原来是要在js中操作。
    c#中也可以用var来定义变量!对于一些runat=server的html控件也会有InnerHTML属性!还以为document是您自己写的类

    js中的replace的参数是正则表达式。具体请参考:http://msdn.microsoft.com/en-us/library/efy6s3e6.aspx
    例如
    var textString = "<p>美丽的一天从现在开始</p><div>从我开始</div>";
    var re = /</g
    var dd = cc.replace(re, "&ltt;")
    就可以把所有的<替换了。

    2009年9月9日 13:36
  • 呵呵,我没说清楚。问题解决,谢谢!
    做最好的自己
    2009年9月10日 2:36