MATLAB通过xmlread/xmlwrite结合Java DOM实现XML读写,读取用DOM方法遍历节点,写入需xmlwrite输出或Java构建;简单场景可用字符串处理,复杂XML推荐转JSON或调用Python。
MATLAB 本身不直接提供像 Python 的 xml.etree.ElementTree 那样灵活的原生 XML 解析/生成接口,但可以通过内置函数和 Java 支持完成常见 XML 读写任务。关键在于:**读用 xmlread + DOM 操作,写用 xmlwrite 或手动拼接字符串(简单场景)+ Java DOM 构建(复杂结构)**。
使用 xmlread 将 XML 文件加载为 Java DOM Document 对象,再用标准 DOM 方法遍历提取数据:
doc = xmlread('data.xml'); —— 返回 org.w3c.dom.Document 对象getElementsByTagName、getFirstChild、getTextContent 等 Java 方法逐层访问节点
需用点号语法,如 doc.getElementsByTagName('name').item(0).getTextContent
getElementsByTagNameNS 并传入 URI不能直接“编辑”已读取的 DOM 后保存——需用 xmlwrite 输出到文件或字符串:
doc 做增删改(如 createElement、appendChild),再执行 xmlwrite('output.xml', doc)
javaObject('javax.xml.parsers.DocumentBuilder') 创建空文档,再逐步添加元素、属性、文本节点xmlwrite 默认不带缩进;如需格式化输出,可配合 Java 的 Transformer 类设置 OutputKeys.INDENT
若 XML 结构极固定、层级浅(如配置项),可用正则或 strfind/regexp 提取字段,用 fprintf 拼接写入:
→ zuojiankuohaophpcn 等),否则 XML 无效
fid = fopen('cfg.xml','w'); fprintf(fid, '%d ', 8080); fclose(fid);
对于复杂 XML(如 MathML、SVG、大型配置),推荐绕过原生支持:
webread + 外部 API(如在线 XML→JSON 转换服务)预处理jsondecode/jsonencode),再交由其他语言处理 XMLpyrun = 'python -c "import xml.etree.ElementTree as ET; ..."'; system(pyrun);
基本上就这些。核心是接受 MATLAB 的 XML 支持偏底层(基于 Java DOM),不追求易用性,但足够可靠。小文件手动解析,大项目建议换语言或封装成 Java 工具类复用。