【问题标题】:CDATA to ignore html tags doesn't work忽略 html 标签的 CDATA 不起作用
【发布时间】:2012-10-05 02:23:40
【问题描述】:

您好,我正在向 XML 中的属性传递一条消息。 xml 是'emailBodyXML',我想接收消息的属性是'body'。我传递的消息包含在变量“emailBody”中。

我有这个代码:

emailBodyXML.selectSingleNode("//email").setAttribute("body", "<![CDATA[" + emailBody + "]]>");

我将 cdata 放入其中是因为我希望它忽略 emailBody 可能包含的 html 标签。 但是当我调试它时,html标签被转换为&amp;lt;&amp;gt;。我不喜欢它被转换成那样。我希望它仍然显示“”。我的代码有什么问题?

【问题讨论】:

    标签: xml parsing cdata


    【解决方案1】:

    您不能在属性值中包含 &lt;,因此您的 &lt;![CDATA[... 无效。如果不使用 &lt; 的实体(以及引号、& 符号等),您将无法将标记放在属性值中。最好的办法是在元素中使用 CDATA

    http://www.w3.org/TR/2008/REC-xml-20081126/#attdecls

    例子:

    <body><![CDATA[<p>HTML MARKUP GOES HERE.</p>]]></body>
    

    【讨论】:

    • 我用谷歌搜索,我的大部分搜索都说在元素上使用 CDATA 是不可能的。你建议我怎么做?
    • 您好,谢谢。所以如果我不能 CDATA 属性,我在文本上使用 CDATA。所以这就是我所做的,xml 看起来像这样,TEXT VALUE。而不是我上面所做的将'emailBody'的值传递给属性'body',我只是将它传递给它的文本(TEXT VALUE)以便我可以对其进行CDATA:emailBodyXML.selectSingleNode(“//email/body ").text = "";它仍然无法正常工作。你知道为什么吗?
    【解决方案2】:

    这对于 HTML 来说现在 已过时https://developer.mozilla.org/en-US/docs/Web/API/CDATASection#Specifications 说:

    请注意,不应在 HTML 中使用 CDATA 部分;他们只 在 XML 中工作。

    另见

    【讨论】:

      猜你喜欢
      • 2012-04-08
      • 2011-04-08
      • 1970-01-01
      • 2012-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-14
      相关资源
      最近更新 更多