MATLAB Answers

Ondrej
0

setXmlStandalone bug?

Asked by Ondrej
on 7 Apr 2011
Latest activity Commented on by Ondrej
on 6 Dec 2013
Hi, I have this problem. If I make this in matlab
---
docNode = com.mathworks.xml.XMLUtils.createDocument('root');
docNode.setXmlStandalone(1);
docNode.setXmlVersion('1.1');
xmlWrite('file.xml',docNode);
----
I don't see any "standalone" atttribute, and the version is still set to '1.0'.
i.e. the 'file.xml' looks like:
'<?xml version="1.0" encoding="utf-8"?> root/'
but it should look like:
'<?xml version="1.1" standalone="yes" encoding="utf-8"?> root/
Is it a bug in matlab, or am I doing something wrong? Thanks.
I'm using Matlab 2009b (7.9.0).

  1 Comment

Abby
on 5 Feb 2012
Did you ever find a solution for this? I have the same issue.

Sign in to comment.

2 Answers

Answer by Michael Katz on 6 Feb 2012
 Accepted Answer

Our implementation doesn't forward that document property to the serializer. You'll have to do it yourself, like this:
docNode = com.mathworks.xml.XMLUtils.createDocument('AddressBook');
%don't do this docNode.setXmlStandalone(1)
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;
tfactory = TransformerFactory.newInstance;
serializer = tfactory.newTransformer;
src = DOMSource(docNode);
stream = java.io.StringWriter;
dst = StreamResult(stream);
%set the value here instead
serializer.setOutputProperty(OutputKeys.STANDALONE,'yes');
serializer.setOutputProperty(OutputKeys.VERSION,'1.1');
serializer.transform(src,dst);
result = char(stream.toString)

  2 Comments

:) Well, thanks for the answer. Now, I am just wondering, wouldn't it be easier to implement such methods (setXmlStandalone and setXmlVersion) directly in matlab (you support other DOM methods). Especially when they are both standardized DOM methods (java parser supports them as well).
I would say, it is just much more "user-friendly" to write one line of code instead of "low-level xml serializing".

Sign in to comment.


Answer by Darlling5147 Sew on 6 Dec 2013

how if I wanted to save it into .xml file? I tried this method but at the very last step I wanted to write" xmlwrite('AB.xml',result)" this it fail.....how to solve this problem of exporting into .xml format?
Thank you in advance.

  1 Comment

xmlwrite requires DOMnode object as input. And not some char. e.g. xmlWrite('AB.xml',docNode)

Sign in to comment.