【发布时间】:2014-08-20 15:04:59
【问题描述】:
我对 XML 很陌生,对 Matlab 中的 XML 也很陌生,但我正在尝试从(非常大的)XML 文件中读取属性。
文件如下所示:
<WorkGen>
<experiment>
<parameters>
<exptid> abcd </exptid>
<years> 400 </years>
</parameters>
</experiment>
<experiment>
<parameters>
<exptid> wxyz </exptid>
<years> 90 </years>
</parameters>
</experiment>
...
</WorkGen>
给定一个实验 ID (exptid),我希望能够使用 Matlab 找到年份的值。有人知道这样做的简单方法吗?
注意我尝试了XML2Struct,但在尝试读取 XML 时出现内存不足错误:
Java.lang.OutOfMemoryError:Java 堆空间 使用 org.apache.xerces.jaxp.DocumentBuilderImpl/parse 时出错 获取异常信息失败 xmlread 中的错误(第 98 行) parseResult = p.parse(fileName); xml2struct 中的错误(第 53 行) xDoc = xmlread(文件);
线程“TimerQueue”中的异常 线程“AWT-EventQueue-0”中的异常 java.lang.OutOfMemoryError:Java 堆空间 java.lang.OutOfMemoryError: Java 堆空间
【问题讨论】:
-
什么是“非常大”?多少kb或mb?多少行?
-
可能大约 100,000 大,所以不是很大,但足够大,以至于我在使用 XML2Struct 时会遇到内存问题
-
请编辑您的问题以提供完整的错误消息 - 行号和所有内容。
-
可以,但我认为没有必要通过 XML2Struct 来执行此操作,并且其他解决方案可能不会遇到相同的问题(同时更适用于那些不想下载Mathworks 文件交换的额外功能)。
-
我知道的所有解决方案(包括
XML2struct)都将基于Java 解析器。很高兴知道错误是来自解析器还是代码中的其他地方。您正在使用哪个version的 Matlab?它是 32 位 PC 版本吗?
标签: xml matlab xml-parsing