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

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

萧允晨
2023-03-14
问题内容

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

即使通常首选这样做,我也需要我的输出来匹配 系统。如何强制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。



 类似资料:
  • 问题内容: 所以这工作: 但这不是: 总而言之,我得到了第一部分(拳击),但是我发现第二部分不起作用是非常不直观的。是否有特定的原因(除了String从Object继承而int不从Object继承)? 编辑: 为了完善我的问题,这也可以: 但是,以下内容却没有: 令人惊讶的是,您遇到了与String相同的问题: 在最后一行产生类强制转换异常。仍然有效: 问题答案: 我刚刚找到了我正在寻找自己的答案

  • 问题内容: 说,我有两节课: JAXB返回按照以下方式格式化的XML: 我的问题是 如何展平XML中的层次结构? 这样我有: 可以通过注释完成吗? 目前,我正在考虑为A创建一种包装类,该包装类将以我希望在XML中看到它们的方式构建字段。有没有更好的办法? 问题答案: 注意: 我是 EclipseLink JAXB(MOXy)的 负责人,并且是 JAXB 2(JSR-222) 专家组的成员。 您可以

  • 问题内容: 是否可以在Java 8中强制转换流?说我有一个对象列表,我可以做这样的事情来过滤掉所有其他对象: 不过,在此之后,如果我想与客户做点事情,则需要对每个客户进行转换: 这看起来有点难看。是否可以将整个流转换为其他类型?像蒙上了一个? 请忽略以下事实:这样做可能意味着不良的设计。我们在计算机科学课上做了类似的事情,所以我一直在研究Java 8的新功能,并且好奇是否有可能。 问题答案: 我认

  • 我试图使用JAXB将ArrayList转换为xml... ...但它不工作,我得到这个错误: 2012年8月27日10:43:58组织。阿帕奇。卡塔琳娜。果心StandardWrapperValve:Servlet。路径为[/Spring3 LDAP WebService]的上下文中servlet[spring]的service()引发异常[请求处理失败;嵌套异常为javax.xml.bind.J

  • 我正在使用TensorFlow为一个对象识别项目设置环境。当谈到编译一些. proto文件时,我碰壁了。它需要努力找到文件的路径/然后找到Pro buf应用程序的路径/然后继续命令每个原型文件!! 我在做什么/试图做什么:按照这个(https://www.edureka.co/blog/tensorflow-object-detection-tutorial/#object)关于edureka的教

  • 问题内容: 我有以下代码将nvarchar转换为整数: 但是,我无法控制参数@value,因此代码可能会失败。无论如何,在进行转换之前是否要检查是否可以进行转换? 问题答案: 好吧,在SQL Server 2012中,您可以使用新的TRY_CAST(),但在SQL Server 2008中,您应该能够使用ISNUMERIC(),然后包括对未通过该测试的值进行处理。