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

如何在没有名称空间的情况下进行封送?

法浩壤
2023-03-14
问题内容

我有一个使用JAXB创建的相当大的重复XML。将整个对象存储在内存中然后进行封送处理会占用太多内存。本质上,我的XML如下所示:

<Store>
  <item />
  <item />
  <item />
.....
</Store>

目前,我对这个问题的解决方案是将根标记“硬编码”到输出流,并逐个编组每个重复元素:

aOutputStream.write("<?xml version="1.0"?>")
aOutputStream.write("<Store>")

foreach items as item
  aMarshaller.marshall(item, aOutputStream)
end
aOutputStream.write("</Store>")
aOutputStream.close()

JAXB以某种方式生成这样的XML

 <Store  xmlns="http://stackoverflow.com">
  <item xmlns="http://stackoverflow.com"/>
  <item xmlns="http://stackoverflow.com"/>
  <item xmlns="http://stackoverflow.com"/>
.....
</Store>

尽管这是一个有效的XML,但它看起来很难看,所以我想知道是否有任何方法告诉编组不要为item元素放置名称空间?还是有更好的方法使用JAXB逐块序列化为XML?


问题答案:

以下对我有用:

         XMLStreamWriter writer = ...
         writer.setNamespaceContext(new NamespaceContext() {
            public Iterator getPrefixes(String namespaceURI) {
                return null;
            }

            public String getPrefix(String namespaceURI) {
                return "";
            }

            public String getNamespaceURI(String prefix) {
                return null;
            }
        });


 类似资料:
  • 我花了一些时间来调查是什么问题,但我不能解决它。当我在XML下面反封送和回封送时,我看到的是不同的XML。 在上面的xml中,只有一个标记(第一个),其余所有(包括名称空间)都是意外元素。另一个应用程序发送上述XML。 null 我真的不明白QName的事

  • 问题内容: 在C#中,我们有和有或没有命名空间(包在Java世界中)得到一个类型(类在这种情况下)的名称。 java等于什么? 显然,有比手动使用和删除软件包名称更好的方法。 问题答案: 返回源代码中给定的基础类的简单名称。如果基础类是匿名的,则返回一个空字符串。 数组的简单名称是组件类型的简单名称,后接“ []”。特别是其组件类型为匿名的数组的简单名称为“ []”。 它实际上是从名称中删除软件包

  • 问题内容: 我想用python来做 。我想在中的此示例中做什么: 在C中: 输出: 在Python中: . 在Python中print会添加或空格,如何避免呢?现在,这只是一个例子,不要告诉我可以先构建一个字符串然后再打印它。我想知道如何将字符串”append”到。 问题答案: 在Python 3中,你可以使用函数的和参数: 不在字符串末尾添加换行符: 在要打印的所有函数参数之间不添加空格: 你可

  • 我知道我可以获得包名并从完整的类名中去掉相应数量的字符,但我猜已经有人这么做了?

  • 我正在使用谷歌自动完成网络服务。我想打电话给警察 https://maps.googleapis.com/maps/api/place/autocomplete/xml?input=Amoeba 但是strictbounds参数没有参数名。我已经创建了改装请求,但无法添加参数 如何添加不带key的参数?

  • 问题内容: 我想将时间戳添加到我的PDF文档中(不带数字签名)。我怎样才能做到这一点? 我可以使用Itext使用数字签名来做到这一点(我在这里有TSAClient): 但是在没有数字签名的情况下如何做类似的事情?使用Bouncy Castle或Itext或Pdfbox …或其他库。 问题答案: 在iText中,您正在寻找 也比照。JavaDoc文档: 您可能需要阅读章节5.4.1 在数字签名中为P