2016-07-07 44 views
1

我想使用Matlab编写一个XML文件,我需要在头文件中指定一个DOCTYPE DTD,但是我还没有在Matlab文档或相关问题中找到任何此方法。涉及DTD参考的每个问题都是关于如何在Matlab中将读取为的XML。在Matlab中编写XML:如何添加对DTD的引用?

我现在能够做的是类型

<?xml version="1.0"?> 
<root> 
    <child> 
     Hello world! 
    </child> 
</root> 

与代码中的XML文件

docNode = com.mathworks.xml.XMLUtils.createDocument('root'); 
root = docNode.getDocumentElement; 

child = docNode.createElement('child'); 
child.appendChild(docNode.createTextNode('Hello World!')); 
root.appendChild(child); 

xmlwrite(docNode) 

但是,我需要的文件,包括一个DTD参考:

<?xml version="1.0"?> 
<!DOCTYPE root SYSTEM "root.dtd" []> 
<root> 
    <child> 
     Hello world! 
    </child> 
</root> 

com.mathworks.xml.XMLUtils中是否有任何功能为了这?或者我将不得不打开生成的XML并手动插入DTD引用?

回答

0

您可以留在使用org.w3c.dom包裹:您可以使用createDocumentType方法DOMImplementation

domImpl = docNode.getImplementation(); 
doctype = domImpl.createDocumentType('root', 'SYSTEM', 'root.dtd'); 

在这个更新完整的示例代码是:

docNode = com.mathworks.xml.XMLUtils.createDocument('root'); 
domImpl = docNode.getImplementation(); 
doctype = domImpl.createDocumentType('root', 'SYSTEM', 'root.dtd'); 
docNode.appendChild(doctype); 

root = docNode.getDocumentElement; 

child = docNode.createElement('child'); 
child.appendChild(docNode.createTextNode('Hello World!')); 
root.appendChild(child); 

xmlwrite(docNode) 

输出

<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE root PUBLIC "SYSTEM" "root.dtd"> 
<root> 
    <child>Hello World!</child> 
</root>