java - 在 Matlab 中编写 XML : How to add reference to DTD?

标签 java xml matlab dom

我正在尝试使用 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/

相关文章:

java - 将对象保存到数据库时 hibernate 未知实体异常

java - 如何为自定义 Java 对象创建编码器?

java - 如何将 jpanel 与油漆一起使用(或重新油漆)

java - spring 安全配置 xml 到 java

matlab - 如何在 Matlab 中创建一个包含 k 个相似对象的元胞数组?

matlab - 为什么 MATLAB uint8 值和 uint16 值不同

python - Python中的特定子矩阵提取

java - 哪里可以获得最新的 Google 云存储客户端

java - 聚合结果无法正确映射到 Java 对象

C#:xml CData 中的字节数组