小编TyC*_*TyC的帖子

JAXB Fragment Marshal没有命名空间

我正在使用我的marshaller的JAXB_FRAGMENT属性来编组WorkSet级别.问题在于,当我封送它时,每次都为WorkSet元素提供xmlns属性.有没有办法编组,以便它不附加xmlns属性?这是我的XML的样子.

    <Import>
        <WorkSets>
            <WorkSet xmlns="http://www.namespace.com">
                <Work>
                <Work>
                ...
                ..
                ...
            </WorkSet>
            <WorkSet xmlns="http://www.namespace.com">
                <Work>
                <Work>
                ...
            </WorkSet>
        </WorkSets>
    </Import>
Run Code Online (Sandbox Code Playgroud)

这是我正在使用上面创建的代码:

FileOutputStream fos = new FileOutputStream("import.xml");
XMLStreamWriter writer = XMLOutputFactory.newFactory().createXMLStreamWriter(fos);

JAXBContext jc = JAXBContext.newInstance(WorkSet.class);
Marshaller m = jc.createMarshaler();
m.setProperty(Marshaller.JAXB_FRAGMENT, Boolean.TRUE);

writer.writeStartDocument();
writer.writeStartElement("Import");
writer.writeAttribute("xmlns","http://www.namespace.com");
writer.writeStartElement("WorkSets");

while(hasWorkSet){
m.marshal(workSet, writer)
}
writer.writeEndDocument();
writer.close();
Run Code Online (Sandbox Code Playgroud)

java xml jaxb marshalling

11
推荐指数
1
解决办法
3万
查看次数

JAXB - unmarshal OutOfMemory:Java堆空间

我目前正在尝试使用JAXB来解组XML文件,但似乎XML文件太大(~500mb)以供unmarshaller处理.我一直在java.lang.OutOfMemoryError: Java heap space@

Unmarshaller um = JAXBContext.newInstance("com.sample.xml");
Export e = (Export)um.unmarhsal(new File("SAMPLE.XML"));
Run Code Online (Sandbox Code Playgroud)

我猜这是因为它试图将大型XML文件作为对象打开,但该文件对于Java堆空间来说太大了.

有没有其他更"'内存有效'的方法来解析大型XML文件~500mb?或者也许是一个unmarshaller属性可以帮助我处理大型XML文件?

这是我的XML的样子

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- -->
<Export xmlns="wwww.foo.com" xmlns:xsi="www.foo1.com" xsi:schemaLocation="www.foo2.com/.xsd">
<!--- --->
<Origin ID="foooo" />
<!---- ---->
<WorkSets>
   <WorkSet>
      <Work>
         .....
      <Work>
         ....
      <Work>
      .....
   </WorkSet>
   <WorkSet>
      ....
   </WorkSet>
</WorkSets>
Run Code Online (Sandbox Code Playgroud)

我想在WorkSet级别解组,仍然能够阅读每个WorkSet的所有工作.

java xml memory

8
推荐指数
2
解决办法
1万
查看次数

JAXB碎片化编组

我在使用Marshaller.JAXB_FRAGMENT属性成功编组时遇到了一些麻烦.这是我想要输出的XML的简单版本.

<Import>
    <WorkSets>
        <WorkSet>
            <Work>
            <Work>
            ...
            ..
            ...
        </WorkSet>
        <WorkSet>
            <Work>
            <Work>
            ...
        </WorkSet>
    <WorkSets>
<Import>
Run Code Online (Sandbox Code Playgroud)

的<Import>和<WorkSets>元件基本上围住了大量的只是容器元素<WorkSet>&<Work>元件.我现在正试图在马萨诸塞州<WorkSet>.

  1. 是否有可能最初编组<Import>和<WorkSets>元素,然后从元素编组<WorkSet>并将输出封装在<Import><WorkSets>标签中?
  2. 当我在WorkSet级别编组它将xmlns='http://namespace.com'属性附加到WorkSet标记时,有没有一种方法可以在没有将namespace属性附加到Workset的情况下编组?

java xml jaxb

7
推荐指数
1
解决办法
9827
查看次数

Java定宽文件格式读/写库

我正在寻找一个很好的 Java 库,它可以轻松地允许读/写固定宽度的文件。需要维护遗留系统,即需要文件才能使用 COBOL。

任何建议都非常感谢!

谢谢。

java file fixed-length-record

6
推荐指数
2
解决办法
1万
查看次数

Java JAXB - 使用重启逻辑编写XML文件

我正在创建一个非常大的XML文件(700mb +),它可以批量处理大量数据.该程序充当极大的sybase数据库和应用程序之间的接口.我目前有xsd架构绑定到类.我需要一种能够在重新启动逻辑的情况下编写XML的方法.

IE能够知道我离开的地方.或者换句话说,如果程序失败,我需要能够看到最后写入XML文件的内容,以便它可以从我中断的地方继续.这是一个例子.

<root>
  <WorkSet>
    <Work>
      <Customer>
    <Work>
      <Customer>
  <WorkSet>
    <Work>
      .....
<root>
Run Code Online (Sandbox Code Playgroud)

假设写入'work'或'workset'节点后程序失败.有没有办法找到我停止处理的地方?我试图避免由于XML文件的剪切大小而将XML文件读回内存(假设它完成500mb的XML并且失败).

谢谢您的帮助.

java xml append jaxb application-restart

5
推荐指数
1
解决办法
684
查看次数

exit 语句不会中断 unix shell 中的 while 循环

每个状态检查 if 语句中的 exit 语句不会中断 while 循环并真正退出脚本。我可以做些什么来打破循环并使用 $STATUS 代码退出吗?

编辑:我已经更新了我的代码,但它仍然无法正常工作。状态检查 if 语句成功打破了循环,但当我尝试评估 $EXIT_STATUS 时,它始终为空,可能与范围有关。我在这里缺少什么?

  if [ $RESTART -le $STEP ]; then
  . tell_step

  while read XML_INPUT; do

    XML_GDG=`get_full_name $GDG_NAME P`

    cp $XML_INPUT $XML_GDG


    STATUS=$?
    EXIT_STATUS=$STATUS
    if [ $STATUS -ne 0 ]; then
      break
    fi

    add_one_gen $XML_GDG

    STATUS=$?
    EXIT_STATUS=$STATUS
    if [ $STATUS -ne 0 ]; then
      break
    fi

  done < $XML_STAGE_LIST

  echo $EXIT_STATUS
  if [ $EXIT_STATUS -ne 0 ]; then
    exit $EXIT_STATUS
  fi

fi
Run Code Online (Sandbox Code Playgroud)

unix shell while-loop

2
推荐指数
1
解决办法
1万
查看次数

Windows批处理文件-显示所有子文件夹

我在使用Windows批处理文件返回JUST文件夹(忽略文件)时遇到困难。

这就是我现在所拥有的。目前,它正在重播文件和子文件夹。

for /r %%g in ("xx*") do echo %%g
Run Code Online (Sandbox Code Playgroud)

另外,说我只想返回以几个不同的前缀开头的文件夹。

例如:我只想回显“工作”文件夹中以w *,we *,cm *,cr *等开头的文件夹。我可以使用批处理文件吗?

谢谢。

windows batch-file subdirectory

1
推荐指数
1
解决办法
8877
查看次数