MATLAB社区

MATLAB、社区和更多

更多的XML和MATLAB:控制XML输出

我有很多关于MATLAB的评论在过去几个月的XML功能,所以我想是时候提供更多的职位。今天是本系列的第4部分,这一次覆盖的一些局限性xmlwrite

XMLWRITE MATLAB的函数用于序列化文档元素。只有一个参数,xml内容打印到命令窗口。两个参数,数据保存到一个文本文件。这个函数没有给你很多的空间来定制输出;我们非常期望,大多数MATLAB用户会违约。然而,有些时候你需要一点额外的控制输出。先进的概念是,虽然你在MATLAB工作区中创建一个XML文档对象,输出是由一个Java对象序列化器,和不使用的所有文档的属性。XMLWRITE创建和执行序列化器。定制这个过程你必须自己管理序列化使用MATLAB的Java接口。

特别是,XML节点的属性设置输出文件中设定的序列化器而不是DOM对象传递给XMLWRITE。这个限制是遇到我的博客的一些评论和用户的MATLAB的答案。例如,看到这个MATLAB回答:“setXmlStandalone错误?”。我在那篇文章的解决方法,下面我复制。合理的警告,这是一种先进的Java操作。

docNode = com.mathworks.xml.XMLUtils.createDocument (“AddressBook”);docNode.getDocumentElement.appendChild (docNode.createElement (“b”));docNode.getDocumentElement.appendChild (docNode.createElement (“一个”));%不这样做docNode.setXmlStandalone (1)进口javax.xml.transform。*;进口javax.xml.transform.dom。*;进口javax.xml.transform.stream。*;tfactory =TransformerFactory.newInstance;变压器= tfactory.newTransformer;src =DOMSource(docNode);流=java.io.StringWriter;dst =StreamResult(流);%设置值transformer.setOutputProperty (OutputKeys.STANDALONE“是的”);transformer.setOutputProperty (OutputKeys.VERSION“1.1”);transformer.setOutputProperty (OutputKeys.ENCODING“ASCII”);transformer.transform (src, dst);结果= char (stream.toString)
结果= < ?xml version = " 1.1 " encoding = " ASCII”独立=“是”? > < AddressBook > < / b > < / > < / AddressBook >

正如您可以看到的,从这段代码中,设置OutputProperty使用OutputKeys允许我们控制出现在最终的XML文档。属性设置docNode将被忽略。在本例中,我使用一个StringWriter字符串形式的XML,但是您可以使用一个FileWriter将其保存到磁盘。

我收到了一些评论,这个解决方案是不友好的MATLAB代码我们适应,所以我创建了增强请求给XMLWRITE带来一些这方面的功能。

本系列的其他文章:

编辑2/21/2012:javadoc更新链接

|
  • 打印
  • 发送电子邮件

评论

留下你的评论,请点击在这里MathWorks账户登录或创建一个新的。