setXmlStandalone bug?

4 vues (au cours des 30 derniers jours)
Ondrej
Ondrej le 7 Avr 2011
Commenté : Isirame Omofuma le 29 Juil 2019
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 commentaire
Abby
Abby le 5 Fév 2012
Did you ever find a solution for this? I have the same issue.

Connectez-vous pour commenter.

Réponse acceptée

Michael Katz
Michael Katz le 6 Fév 2012
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 commentaires
Ondrej
Ondrej le 6 Fév 2012
I would say, it is just much more "user-friendly" to write one line of code instead of "low-level xml serializing".
Isirame Omofuma
Isirame Omofuma le 29 Juil 2019
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?

Connectez-vous pour commenter.

Plus de réponses (1)

Darlling5147 Sew
Darlling5147 Sew le 6 Déc 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 commentaire
Ondrej
Ondrej le 6 Déc 2013
xmlwrite requires DOMnode object as input. And not some char. e.g. xmlWrite('AB.xml',docNode)

Connectez-vous pour commenter.

Community Treasure Hunt

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

Start Hunting!

Translated by