例如,当编组到 XML 时,我是否可以强制 JAXB 不将“转换为”?

2024-03-29

我有一个使用 JAXB 编组为 XML 的对象。一个元素包含一个包含引号 (") 的字符串。生成的 XML 具有"“存在的地方。

尽管这通常是首选,但我需要我的输出匹配legacy系统。如何强制 JAXB 不转换 HTML 实体?

--

感谢您的答复。但是,我从未看到处理程序 escape() 被调用。你能看一下我做错了什么吗?谢谢!

package org.dc.model;

import java.io.IOException;
import java.io.Writer;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

import org.dc.generated.Shiporder;

import com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler;

public class PleaseWork {
    public void prettyPlease() throws JAXBException {
        Shiporder shipOrder = new Shiporder();
        shipOrder.setOrderid("Order's ID");
        shipOrder.setOrderperson("The woman said, \"How ya doin & stuff?\"");

        JAXBContext context = JAXBContext.newInstance("org.dc.generated");
        Marshaller marshaller = context.createMarshaller();
        marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
        marshaller.setProperty(CharacterEscapeHandler.class.getName(),
                new CharacterEscapeHandler() {
                    @Override
                    public void escape(char[] ch, int start, int length,
                            boolean isAttVal, Writer out) throws IOException {
                        out.write("Called escape for characters = " + ch.toString());
                    }
                });
        marshaller.marshal(shipOrder, System.out);
    }

    public static void main(String[] args) throws Exception {
        new PleaseWork().prettyPlease();
    }
}

--

输出是这样的:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<shiporder orderid="Order's ID">
    <orderperson>The woman said, &quot;How ya doin &amp; stuff?&quot;</orderperson>
</shiporder>

正如您所看到的,回调永远不会显示。 (一旦我得到回调被调用,我就会担心它是否真的做我想做的事情。)

--


我的队友找到的解决方案:

PrintWriter printWriter = new PrintWriter(new FileWriter(xmlFile));
DataWriter dataWriter = new DataWriter(printWriter, "UTF-8", DumbEscapeHandler.theInstance);
marshaller.marshal(request, dataWriter);

不要将 xmlFile 传递给 marshal(),而是传递知道编码和适当的转义处理程序(如果有)的 DataWriter。

注意:由于 DataWriter 和 DumbEscapeHandler 都在 com.sun.xml.internal.bind.marshaller 包中,因此您必须引导 javac。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

例如,当编组到 XML 时,我是否可以强制 JAXB 不将“转换为”? 的相关文章

随机推荐

  • 使用基于函数的视图更新视图

    如何将对象传递到模型表单中以在呈现页面时预填充字段 我想做一些类似于 Django UpdateView 基于类的视图中的构建 但使用基于函数的视图 只需从模型中获取对象并将该对象作为实例传递给表单即可 然后将表单传递给模板 像下面的例子一
  • 使用 Flexjson 将 JSON 列表反序列化为对象列表

    我正在尝试反序列化以下 json books id 1 name book 1 id 2 name book 2 进入列表 之前用这个 json 工作过 id 1 name book 1 id 2 name book 2 使用此代码 Lis
  • data.table 将 NA 替换为多列的均值和 id

    如果我有以下数据表 dat lt data table id c 1 1 1 1 2 2 2 2 var1 c NA 1 2 2 1 1 2 2 var2 c 4 4 4 4 5 5 NA 4 var3 c 4 4 4 NA 5 5 5 4
  • setTimeout 函数中未定义的 JavaScript 变量

    我有以下代码 for var i 0 i lt markers length i var lat markers i 0 var lng markers i 1 var img markers i 2 var info markers i
  • 重命名 Azure Active Directory

    目前 我有一个与我在 Azure 平台工作的公司的一组订阅关联的 Active Directory 但是 默认目录 AD 位于域上forenamesurnamehotmailco where forenamesurname是一名不再在这里工
  • jquery iframe跨域动态高度

    仅使用 jquery 且没有庞大的插件 这是否可能 我知道有很多插件和替代品 我正在寻找最短 最强大和最干净的 最好依赖jquery 这里有基本的 jsfiddle 来尝试你的想法 http jsfiddle net 3vPJd http
  • 有没有办法将这个 PHP 放入数组并简化它?

    以下代码加载在指定文件夹 单独定义 中找到的所有 php 文件 有没有办法将其放入数组中以简化代码 只有几个变量发生变化 但本质上代码会重复多次 The General Files the general opendir FRAMEWORK
  • 登录和会话 PHP

    我在检查会话时遇到一些问题 要访问页面 我需要激活会话 登录流程 Connect to mysql server require reservation connect php Function to sanitize values rec
  • 如何就地初始化数组?

    如何在不复制或移动构造临时元素的情况下初始化数组 当元素有明确的deleted 复制或移动构造函数 仅当元素具有默认构造函数或具有所有默认参数的构造函数时 我才能初始化数组 并且执行以下操作之一 a 明确声明数组 b 直接初始化和零初始化数
  • 读取通配符文件名的 Quartz 作业仅获取一个文件

    使用骡子 3 7 如果我的目录中有 5 个扩展名为 csv 的文件 则以下代码仅选取这五个文件之一 如果我删除石英触发器并将其设为普通文件 inbound endpoint 它将拾取所有五个文件 看起来很简单 但并没有按预期工作 Thank
  • 在 Silverlight 中绑定 ComboBox.SelectedItem(更多)

    与我之前的问题相关 在 Silverlight 中绑定 ComboBox SelectedItem https stackoverflow com questions 855519 binding combobox selecteditem
  • 基于流的路由和开放流

    这可能不是典型的 stackoverflow 问题 我的一位同事一直猜测基于流的路由将成为网络领域的下一个重大事件 Openflow http www openflow org提供在大型应用 IT数据中心等中使用低成本交换机的技术 取代Ci
  • 最小化时,窗口应用程序在任务栏上呈橙色闪烁

    我有一个窗口应用程序 当我最小化任务栏上的窗口应用程序以在另一个应用程序上工作时 我们有一种工具可以将消息从一个窗口应用程序发送到另一个窗口应用程序 因此 我的第一个 win 应用程序被最小化 现在我打开另一个 win 应用程序 然后向第一
  • C++11 的序列压缩函数?

    使用新的基于范围的 for 循环 我们可以编写如下代码 for auto x Y IMO 是哪个huge改进自 例如 for std vector
  • Websphere 8.5 Web 服务未部署

    我很难让 Web 服务在 Websphere 上运行 我有一个 ejb jar 它使用 JAXWS 注释 WebService 定义了 Web 服务 然后将该 ejb jar 打包到耳朵中 我已成功将 Ear 部署到 Glassfish 上
  • 是否可以将 javascript 嵌入到 SSRS 报告中?

    SQL Server 报表可以嵌入 vbscript 并在客户端执行 但是使用 javascript 也可以完成同样的操作吗 我认为能够在客户端执行 jQuery 和 CSS 操作来创建更具交互性的深入体验将是非常有用的 在我看来 Repo
  • 选择 Node.js 上 Bookshelf、MySQL、Knex 在两个日期之间创建的对象

    我需要获取两次之间创建的对象的列表 我能够通过编写 SQL 查询来获取数据 但我需要通过 Bookshelf 编写这个查询 我的简单查询 router route locations fetch all locations get func
  • UINavigationController 内的 viewController 是否可以有不同的方向?

    我希望所有视图控制器仅支持纵向模式 除了一个视图控制器 我们将其称为 横向支持 ViewController 它也应该支持横向模式 问题是 当我在横向模式下处于 LandscapeSupportViewController 中 然后推送一个
  • 如何在 wpf c# Visual Studio 中使用标签或文本块的单击事件?

    我正在开发桌面应用程序 我收到建议使用 wpf 而不是 winforms 当我单击标签时 我想转到另一个表单 窗口 但找不到标签和文本块的单击事件 谁能告诉我鼠标左键按下事件的用途是什么 谁能告诉我鼠标左键按下事件的用途是什么 例如 它可以
  • 例如,当编组到 XML 时,我是否可以强制 JAXB 不将“转换为”?

    我有一个使用 JAXB 编组为 XML 的对象 一个元素包含一个包含引号 的字符串 生成的 XML 具有 quot 存在的地方 尽管这通常是首选 但我需要我的输出匹配legacy系统 如何强制 JAXB 不转换 HTML 实体 感谢您的答复