当前位置: 首页 > 面试题库 >

XMLStreamWriter writeCharacters无需转义

沈凡
2023-03-14
问题内容

如何使用XMLStreamWriter确切地编写我输入的内容?例如,如果我创建脚本标签并用javascript填充,我不希望我所有的单引号都以‘

这是我编写的一个小测试,它没有使用我已经使用的任何抽象,只是调用了writeCharacters。

  public void testWriteCharacters() {
    StringWriter sw = new StringWriter();
    XMLOutputFactory factory = XMLOutputFactory.newInstance();

    StringBuffer out = new StringBuffer();
    try {
      XMLStreamWriter writer = factory.createXMLStreamWriter(sw);
      writer.writeStartElement("script");
      writer.writeAttribute("type","text/javascript");
      writer.writeCharacters("function hw(){ \n"+
      "\t alert('hello world');\n" +
      "}\n");
      writer.writeEndElement();
      out.append(sw);
    } catch (XMLStreamException e) {
    } finally {
      try {
        sw.close();
      } catch(IOException e) {
        e.printStackTrace();
      }
    }
    System.out.println(out.toString());
  }

这会为围绕hello world的两个单引号生成一个apos实体。


问题答案:

XmlStreamWriter.writeCharacters()
无法逃脱 '。只逃脱 <>并且 &writeAttribute也逃脱 "(见的javadoc)。

但是,如果您想编写文本而又不逃脱,则必须CDATA使用将该文本编写为一个小节writeCData()

CDATA各节中编写脚本的典型方法是:

<script>//<![CDATA[
    ...
//]]></script>

那是:

out.writeCharacters("//");
out.writeCData("\n ... \n//");


 类似资料:
  • 问题内容: 给定代码: 输出如下: 调试大型json文档时,很难读懂- 使用Newtonsoft.Json的内置功能(不是正则表达式或可能会破坏事情的hack),可以通过任何方式使输出字符串成为有效值: 问题答案: 查看值时,在调试器中看到的是应该在C#文件中使用以获得相同值的字符串值。 确实可以替换 与 而不更改程序的行为。 因此,要获得不同的值,您应该更改JsonConvert的工作方式,但是

  • 如果有人需要,这是我现在的剧本: 我使用的是

  • 问题内容: 我的号码是654987。它是数据库中的ID。我想将其转换为字符串。常规的Double.ToString(value)使它成为科学形式6.54987E5。我不想要的东西。 我发现的其他格式化功能会检查当前的语言环境,并添加适当的千位分隔符等。由于它是一个ID,我完全不能接受任何格式。 怎么做? [编辑]要澄清:我正在一个特殊的数据库上工作,该数据库将所有数字列都视为双精度。 Double

  • 我试图使用JOLT根据属性将一个标签数组分割成多个标签。 这是输入和预期输出 输入json 预期输出如下所示 请帮助我进行颠簸转换。提前致谢

  • 问题内容: 我需要转义[在SQL Server的sql查询中 实际上,我实际上是在寻找[[,但我不希望它像通配符一样起作用。我试过了 : 但是从这里得到错误信息: 消息102,级别15,状态1,行1“某物”附近的语法不正确。消息105,级别15,状态1,行1字符串’后的右引号; 问题答案: 使用: 您也可以使用: 在MSDN上的LIKE(Transact-SQL)中描述。

  • 问题内容: 我正在尝试使用Java通过套接字发送多个图像,但我需要一种更快的方法将图像转换为字节数组,以便可以发送它们。我尝试了以下代码,但它向C:\驱动器写入了大约10,000张图像。有没有一种方法可以在不写入磁盘的情况下进行转换?谢谢! 问题答案: 这应该工作: