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

我想将输出流转换为String对象

耿敏达
2023-03-14
问题内容

我想将转换OutputStreamString对象。OutputStream编组JAXB对象后,我返回了一个对象。


问题答案:

对jaxb不太熟悉,根据我的发现,您可以使用转换为字符串

public String asString(JAXBContext pContext, 
                        Object pObject)
                            throws 
                                JAXBException {

    java.io.StringWriter sw = new StringWriter();

    Marshaller marshaller = pContext.createMarshaller();
    marshaller.setProperty(Marshaller.JAXB_ENCODING, "UTF-8");
    marshaller.marshal(pObject, sw);

    return sw.toString();
}

ws.apache.org

但我不确定搅拌对象。仍在搜索中。

**编辑

编组非元素

另一个常见的用例是您的对象上没有@XmlRootElement。JAXB允许您像这样封送它:

marshaller.marshal(new JAXBElement(
new QName(“”,“ rootTag”),Point.class,new Point(…)));

这会将元素作为根元素,然后是对象的内容,然后是。实际上,您可以将其与具有@XmlRootElement的类一起使用,该类仅重命名根元素名称。

乍一看,第二个Point.class参数可能看起来很多余,但是实际上有必要确定编组器是否会产生(臭名昭著的)@xsi:type。在此示例中,类和实例都是Point,因此您不会看到@xsi:type。但是,如果它们不同,您将看到它。

这也可以用于封送一个简单的对象,例如String或整数。

marshaller.marshal(new JAXBElement(
new QName(“”,“ rootTag”),String.class,“ foo bar”)));

但是不幸的是,它不能用于封送List或Map之类的对象,因为它们不是JAXB世界中的头等公民。

在这里找到



 类似资料:
  • 问题内容: 在Java 8流API中,调用任何对象都会返回一个包含所有字符的对象。 将返回的对象转换回a 的正确方法是什么?调用会给我一个,任何构造函数都不接受。 问题答案: 您可以使用,然后使用构造函数。正如返回UTF-16代码单元所指定的那样,这并不完全令人满意,基本上是: 返回此序列的int零扩展char值的流。映射到代理代码点的任何字符都将通过未解释传递。 使用反而会更加保持与此构造,其预

  • 问题内容: 我正在开发一些应用程序,它允许从SD卡中选择图像,将其保存到数据库中并为ImageView设置此值。我需要知道将uri转换为字符串并将字符串转换为uri的方法。现在,我使用了Uri的getEncodedPath()方法,但是例如,此代码不起作用: 因此,我不知道如何将Uri保存到数据库中并根据保存的值创建新的Uri。请帮我修复它。 问题答案: 我需要知道将uri转换为字符串并将字符串转

  • 问题内容: 如何从float转换为string或从string转换为float? 在我的情况下,我需要在2个值字符串(我从表中获得的值)和我计算出的浮点值之间进行断言。 我尝试从浮动到字符串: 但是断言失败 问题答案: 使用Java的类。 为了进行比较,将字符串转换为float并比较两个float总是更好。这是因为对于一个浮点数,存在多个字符串表示形式,与字符串相比,它们是不同的(例如“ 25”!

  • 问题内容: 我想将org.w3c.dom.Document对象转换为String。我正在使用Java 6,并且愿意使用能够完成任务的任何(完全免费的)技术。我从此线程尝试了解决方案- 在Java中,有比此代码更优雅的方法来将XML文档转换为Java中的String吗?,他们在哪里 但遭到了以下可怕的例外…… 问题答案: 如果您可以进行转换,则可以尝试此操作。

  • 问题内容: 如何将String对象转换为Date对象? 我想我需要做这样的事情: 任何帮助将不胜感激。 问题答案: SimpleDateFormat dateFormat = new SimpleDateFormat(“dd.MM.yyyy”); Date date = dateFormat.parse(“1.1.2001”); 有关详细信息,请参阅: SimpleDateFormat文档

  • 问题内容: 我只想编写这样的代码: 我以为可以代表任何类型,所以也可以代表任何类型,现在我知道我错了,是一个整体类型,不能视为。 因此,有人可以帮助我如何使此代码正常工作,或其他解决方案吗? PS :我知道或可以相互转换,但是实际上这并不是我的意图,可能还有另一种类型,而不是and 。 问题答案: 现在我知道我错了,是一个整体类型,不能视为。 是的,那是因为它是它自己的类型(而不是其他任何类型的“