社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

简单的XML节点创建

上次在我XML系列,我向您展示了如何使用xmlread在MATLAB环境下创建一个XML文档对象。我还承诺跟进,在关于如何使用文档对象的更多信息。今天,我想向您展示如何从头开始创建一个DOM,然后建立一个简单的XML文档。要做到这一点,我将使用规范化地址簿实例作为样本XML文档。

第一步是创建一个新节点。要做到这一点,我们需要使用Java方法com.mathworks.xml.XMLUtils.createDocument ()由于MATLAB没有原生XML对象。在这个示例中,我们创建一个顶层(“根”或“文档”)节点AddressBook。使用一个参数的版本xmlwrite命令窗口将显示xml文档。

docNode = com.mathworks.xml.XMLUtils.createDocument (“AddressBook”);xmlwrite (docNode)
ans = < ?xml version = " 1.0 " encoding = " utf - 8 " ?> < AddressBook / >

现在我有文档元素,我想填充它的子节点。文档对象也是工厂的新节点。因此我每次创建一个新节点,我从我的这样做docNode对象。还请注意,我不能直接将子元素节点附加到文档,我得第一个电话geDocumentElement文档的根元素节点。都有点让人困惑,但我相信它是有意义的原始设计者的Apache Xerces DOM(我们使用的实现)。

在下一步中,我创建了一个条目元素代表一个人在我的通讯录,并将它作为一个孩子附加到根节点。

entry_node = docNode.createElement (“入口”);docNode.getDocumentElement.appendChild (entry_node);xmlwrite (docNode)
ans = < ?xml version = " 1.0 " encoding = " utf - 8 " ?> < AddressBook > <条目/ > < / AddressBook >

现在有一个条目在地址本中,我将创建数据元素。为此我创建新元素节点,并将这些附加到我的条目节点。我还创建文本节点来表示这些元素的文本数据。例如,我创建了一个“的名字”节点的人的名字,把“友好Mathworker”(同事)作为文本节点的子的名字元素。这样做让我建立XML树状结构。除了文本节点,我们可以创建属性节点(参见下一节),以及CDATA,评论,和其他类型的XML节点。

添加的名字,电话号码

name_node = docNode.createElement (“名字”);name_text = docNode.createTextNode (“友好的j . Mathworker”);name_node.appendChild (name_text);entry_node.appendChild (name_node);phone_number_node = docNode.createElement (“PhoneNumber”);phone_number_text = docNode.createTextNode (“(508)647 - 7000”);phone_number_node.appendChild (phone_number_text);entry_node.appendChild (phone_number_node);xmlwrite (docNode)
ans = < ?xml version = " 1.0 " encoding = " utf - 8 " ?> < AddressBook > <条目> <名称>友好j . Mathworker < /名称> < PhoneNumber > (508) 647 - 7000 < / PhoneNumber > < /条目> < / AddressBook >

最后一步,我要一个地址添加到这个人的条目。除了一个简单的文本节点,我添加了一些属性使用两种不同的方法。首先,我使用方便setAttribute(名称、值)表明这种方法地址类型工作”。在第二种情况下,我使用更加正式的节点结构创建一个“hasZip"属性表明,我离开了我的公司的地址的邮政编码。请注意,此实现的xmlwrite按字母顺序排序的属性显示该文档的时候,而元素节点留在他们附加的顺序。

address_node = docNode.createElement (“地址”);address_node.setTextContent (“马3苹果希尔博士,纳蒂克”)%直接设置一个属性address_node.setAttribute (“类型”,‘工作’);entry_node.appendChild (address_node);%或创建一个节点的属性has_zip_attribute = docNode.createAttribute (“hasZip”);has_zip_attribute.setNodeValue (“不”);address_node.setAttributeNode (has_zip_attribute);xmlwrite (docNode)
ans = < ?xml version = " 1.0 " encoding = " utf - 8 " ?> < AddressBook > <条目> <名称>友好j . Mathworker < /名称> < PhoneNumber > (508) 647 - 7000 < / PhoneNumber > <地址hasZip = "不" type = "工作" > 3苹果希尔博士,纳蒂克马< /地址> < /条目> < / AddressBook >

下次我关于XML的帖子,我将描述如何导航一个DOM找到感兴趣的数据。

|
  • 打印”></a></li>
             <!-- 1. email -->
             <li><a class=发送电子邮件”></a></li>
             <!-- 3. twitter -->
             <li style=

评论

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