我正在尝试使用 Matlab 编写 XML 文件,并且需要在标题处指定 DOCTYPE DTD,但我在 Matlab 文档或相关问题中没有找到任何方法。每个涉及 DTD 引用的问题都是关于如何读取 XML 到 Matlab 中。
我现在能做的是一个类型的 XML 文件
<?xml version="1.0"?>
<root>
<child>
Hello world!
</child>
</root>
使用代码
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 引用?
最佳答案
您可以继续使用 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>
关于java - 在 Matlab 中编写 XML : How to add reference to DTD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38243669/