setXmlStandalone bug?

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 Commento

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

Accedi per commentare.

 Risposta accettata

Michael Katz
Michael Katz il 6 Feb 2012

0 voti

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)

3 Commenti

Ondrej
Ondrej il 6 Feb 2012
:) 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).
Ondrej
Ondrej il 6 Feb 2012
I would say, it is just much more "user-friendly" to write one line of code instead of "low-level xml serializing".
Hi, I did all this and found a way to write the string result to a domnode.
import java.io.StringReader;
import org.xml.sax.InputSource;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
factory = DocumentBuilderFactory.newInstance();
builder = factory.newDocumentBuilder();
s = StringReader(result);
i = InputSource(s);
doc = builder.parse(i);
xmlwrite('try.xml', doc)
On using xmlwrite to write the result to file the standalone argument still does not appear in the xml file and the version remains as 1.1. Is there a simpler way to write to xml? Is there a simpler way to solve this probelm?

Accedi per commentare.

Più risposte (1)

Darlling5147 Sew
Darlling5147 Sew il 6 Dic 2013

0 voti

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 Commento

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

Accedi per commentare.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by