错误使用xml文件和Matlab的结构
18视图(30天)
显示旧的评论
我试图通过Matlab修改xml文件。
问题是:我遇到一个错误当我试着将Matlab的结构转换为一个xml文件。错误的是:
如果真正的
错误使用xmlwrite(第82行)
Java异常发生:
java.lang.NullPointerException
在com.mathworks.xml.XMLUtils.serializeXML (XMLUtils.java: 192)
在com.mathworks.xml.XMLUtils.serializeXML (XMLUtils.java: 49)
错误在struct2xml(第79行)
varargout {1} = xmlwrite (docNode);
错误在read_change_timestamps(第5行)
测试。xml= struct2xml(eci);
结束
这与第二个函数“struct2xml”,但我似乎无法理解究竟是什么这个问题。
这是一个xml文件的一个例子,我试图修改:
如果真正的
< ?xml version =“1.0”编码=“utf - 8”独立的=“是的”? >
< eventTrack xmlns =“http://www.egi.com/event_mff”xmlns: xsi =“http://www.w3.org/2001/XMLSchema-instance”>
<名称> ECI TCP / IP 55513 < /名称>
< trackType >机枪兵< / trackType >
<事件>
< beginTime > 2017 - 04 - 04 - t14:15:43.529000 + 0 < / beginTime >
<时间> 1000 < /持续时间>
<代码> < /代码>任务
<标记> < /标签>
<描述> < /描述>
< sourceDevice >多口ECI < / sourceDevice >
<键>
<键>
<键码>硬脑膜< /键码>
<数据类型=“短”> 147 < /数据>
< /关键>
< / >键
< /事件>
<事件>
< beginTime > 2017 - 04 - 04 - t14:15:45.979000 + 0 < / beginTime >
<时间> 1000 < /持续时间>
<代码>机枪兵> < /代码
<标记> < /标签>
<描述> < /描述>
< sourceDevice >多口ECI < / sourceDevice >
<键>
<键>
<键码> tria < /键码>
<数据类型=“短”> 1 > < /数据
< /关键>
<键>
<键码> < /键码>代码
<数据类型=“短”> 70 < /数据>
< /关键>
<键>
<键码> < /键码>类型
<数据类型=“短”2 > < /数据>
< /关键>
< / >键
< /事件>
<事件>
< beginTime > 2017 - 04 - 04 - t14:15:46.096000 + 0 < / beginTime >
<时间> 1000 < /持续时间>
ISI <代码> < /代码>
<标记> < /标签>
<描述> < /描述>
< sourceDevice >多口ECI < / sourceDevice >
<键>
<键>
<键码>硬脑膜< /键码>
<数据类型=“短”> 164 < /数据>
< /关键>
< / >键
< /事件>
<事件>
< beginTime > 2017 - 04 - 04 - t14:15:48.830000 + 0 < / beginTime >
<时间> 1000 < /持续时间>
<代码>机枪兵> < /代码
<标记> < /标签>
<描述> < /描述>
< sourceDevice >多口ECI < / sourceDevice >
<键>
<键>
<键码> tria < /键码>
<数据类型=“短”2 > < /数据>
< /关键>
<键>
<键码> < /键码>代码
<数据类型=“短”> 149 < /数据>
< /关键>
<键>
<键码> < /键码>类型
<数据类型=“短”> 1 > < /数据
< /关键>
< / >键
< /事件>
<事件>
< beginTime > 2017 - 04 - 04 - t14:15:48.930000 + 0 < / beginTime >
<时间> 1000 < /持续时间>
ISI <代码> < /代码>
<标记> < /标签>
<描述> < /描述>
< sourceDevice >多口ECI < / sourceDevice >
<键>
<键>
<键码>硬脑膜< /键码>
<数据类型=“短”> 159 < /数据>
< /关键>
< / >键
< /事件>
<事件>
< beginTime > 2017 - 04 - 04 - t14:15:51.580000 + 0 < / beginTime >
<时间> 1000 < /持续时间>
<代码>机枪兵> < /代码
<标记> < /标签>
<描述> < /描述>
< sourceDevice >多口ECI < / sourceDevice >
<键>
<键>
<键码> tria < /键码>
<数据类型=“短”> 3 < /数据>
< /关键>
<键>
<键码> < /键码>代码
<数据类型=“短”> 66 < /数据>
< /关键>
<键>
<键码> < /键码>类型
<数据类型=“短”2 > < /数据>
< /关键>
< / >键
< /事件>
<事件>
< beginTime > 2017 - 04 - 04 - t14:15:51.680000 + 0 < / beginTime >
<时间> 1000 < /持续时间>
ISI <代码> < /代码>
<标记> < /标签>
<描述> < /描述>
< sourceDevice >多口ECI < / sourceDevice >
<键>
<键>
<键码>硬脑膜< /键码>
<数据类型=“短”> 147 < /数据>
< /关键>
< / >键
< /事件>
< / eventTrack >
结束
可能是什么问题?是因为原始xml文件的结构吗?
接受的答案
Guillaume
2017年5月16日
编辑:Guillaume
2017年5月16日
我不确定这是一个错误在matlab xml函数或
struct2xml
但问题是由于与空的文本节点。
struct2xml
这些节点的文本属性集
[]
而不是
”
matlab xml函数不喜欢。如果我没记错的话,matlab用于治疗这两种空矩阵相同,但是现在是更多的严格。
这是一个非常简单的修复。在第166行,
struct2xml
,改变
str = [];
来
str =”;
edit2
:注意,如果你想要做的就是改变的一些节点的时间戳,将xml转换为结构体和背部是浪费时间。你会更好的学习如何操作DOM使用返回的对象
xmlread
。它会更快,避免风险,要么转换失败。