使用 xml2struct 在 matlab 中读取 xml

Posted

技术标签:

【中文标题】使用 xml2struct 在 matlab 中读取 xml【英文标题】:reading xml in matlab by using xml2struct 【发布时间】:2018-02-21 21:00:04 【问题描述】:

我正在尝试使用 xml2struct 函数将 xml 文件转换为 matlab 中的结构,但我总是遇到一些不需要的错误。

这是一个例子:

这是我要转换的 XML 文件。

当我在 matlab 中使用该函数时,我得到以下结果:

我认为/希望我的字符串(“paper”)会是我的数据 - 您可以在其中看到“红色 1”。

相反,该函数找到了一个名为“#text”的子代,我的数据通过一些额外的符号进入了它的结构中。

我尝试使用不同的设置,例如更改文件编码,但没有帮助。 即使我删除了所有新行字符并且我的文件变成了单行字符串(这对我来说完全不可读,尤其是在更大的文件中)仍然是主要问题:

“简化”文件:

结果:

如果我想每隔一秒读取一个较大的文件,子元素是一个“#text”:

1,如何清除换行符而不使我的文件变成单行字符串?

2,在我看来,它不应该以这种方式工作 - “铅笔”字符串应该是我的主要结构中的数据,而不是它下面。

3,我怎样才能摆脱“#text”元素?

【问题讨论】:

【参考方案1】:

第一个问题是:你确定你使用的是the last version 的xml2struct 吗?因为我下载了那个是为了进行测试,从返回的结构的角度来看,一切对我来说都很好:

换行符也是如此。脚本似乎正确地修剪了两边 XML 标记的 Text 属性。

我认为所有问题的共同根源在于您选择了旧版本的脚本来执行解析。如果不想依赖自定义脚本来解析和遍历 XML 文件,总是可以使用内置的xmlread function,它使用底层的 Java 框架来处理一切,可能更可靠(但显然有点有点难用)。

附带说明,永远不要忘记在您的 XML 文件中添加正确的声明,在顶部,在文档根之前:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

【讨论】:

他使用的是 Bioinformatics Toolbox 中的 xm2struct,而您使用的是 fileexchange 中的 xml2struct。

以上是关于使用 xml2struct 在 matlab 中读取 xml的主要内容,如果未能解决你的问题,请参考以下文章

在MATLAB中将XML内容解析为正确的数据类型时出现问题

在matlab的B类属性中使用A类的对象?

如何在Matlab uipanel中捕获按键

在 MySql 中读/写 unicode 数据

使用 opencv 2.4.3 在 Visual c++ 中读/写图像时出错

在 Julia 中读/写进程内存