【发布时间】:2016-01-26 14:55:25
【问题描述】:
我将一些数据写入 XML 文件:
[FileName,PathName] = uiputfile('*.xml','Select the XML file');
if length(FileName) > 3
completePath = [PathName FileName];
% Create the DOM-Object
docNode = com.mathworks.xml.XMLUtils.createDocument('docRootNode');
docRootNode = docNode.getDocumentElement;
docRootNode.setAttribute('version','2.0');
mElement = docNode.createElement('Data1');
docRootNode.appendChild(mElement)
fields = fieldnames(struct1);
for i = 1:numel(fields)
thisElement = docNode.createElement(fields{i});
thisElement.appendChild...
(docNode.createTextNode(struct1.(fields{i}))); %NO ERROR
mElement.appendChild(thisElement);
end
rElement = docNode.createElement('Data2');
docRootNode.appendChild(rElement)
fields = fieldnames(struct2);
for i = 1:numel(fields)
thisElement = docNode.createElement(fields{i});
thisElement.appendChild...
(docNode.createTextNode(struct2.(fields{i}))); %ERROR
rElement.appendChild(thisElement);
end
xmlwrite(completePath, docNode);
end
上周它运行没有任何问题,但从今天开始,我在标记为%ERROR 运行我的代码的行中收到此错误:
没有为类“org.apache.xerces.dom.DocumentImpl”找到具有匹配签名的方法“createTextNode”。
我在互联网上没有找到任何解决方案(问题可能是我不是我的 PC 上的管理员)。
我也不明白,为什么上半部分没有报错(%NO ERROR)
【问题讨论】:
-
是的,因为createTextNode不是org.apache中的一个类,你要使用com.mathworks.xml.createDocument.createTextNode;另外我注意到您将根元素设置为“docRootNode”,然后立即将其设置为 docNode.getDocumentElement。你可能想先解决这个问题。
-
@GameOfThrows 我理解这个问题,但我真的不知道如何解决它。为什么 matlab 想使用 'org.apache...' 虽然我的 docNode 是 'com.mathworks...' 我改变了你提到的另一点;)。
-
如果在您指定的路径上没有找到它,它将自动查找其他库,这是解析过程的一部分。调用函数 createTextNode 时尝试输入完整路径,看看会发生什么,如果仍然输出此错误,则需要联系 Matlab 支持。
-
我仍然得到这个错误,所以我会联系 Matlab 支持。谢谢