XML write set attribute with xml namespace
10 views (last 30 days)
Show older comments
I am trying to write an xml file, where i need to write the xml namespace and its URI as below.
<node xmlns:xml="http://www.w3.org/XML/1998/namespace" >
......
.....
</node>
I understand that this is completely optional and its okay if we don't write it. But i need it as that is expected to be done.
I am using xmlwrite function as using older matlab version, so don't have writeStruct function. When i am writing below code somehow matlab is not writing the xml namespace in the xml file. I think it is because it is preserved but i am not able to get any workaround it.
Can you please help on this ?
docNode = com.mathworks.xml.XMLUtils.createDocument('node');
rootElement = docNode.getDocumentElement;
rootElement.setAttribute('xmlns:xml','http://www.w3.org/XML/1998/namespace');
rootElement.setAttribute('xmlns:2xml','http://www.w3.org/XML/1998/namespace');
xmlwrite('test.xml',docNode);
2 Comments
Mihai
on 11 Mar 2023
Try:
docNode = com.mathworks.xml.XMLUtils.createDocument('node');
rootElement = docNode.getDocumentElement;
rootElement.setAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:xml', 'http://www.w3.org/XML/1998/namespace');
Answers (1)
Meet
on 11 Sep 2024
Edited: Meet
on 11 Sep 2024
Hi Vivek,
The “xml” prefix is reserved, which may cause MATLAB to omit it during the writing process.
As a workaround, you might consider manually editing the XML file after it is generated to include the namespace, you can look it into the code below:
% Import all classes and functions from the matlab.io.xml.dom package
import matlab.io.xml.dom.*
% Create a new XML document with a root element named "node"
docNode = Document("node");
% Retrieve the root element of the XML document
docRootNode = getDocumentElement(docNode);
% Set an attribute with a namespace for the root element
% "http://www.w3.org/2000/xmlns/" is the standard URI for XML namespaces
% "xmlns:xml" is the attribute name, and "http://www.w3.org/XML/1998/namespace" is its value
docRootNode.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xml", "http://www.w3.org/XML/1998/namespace");
% Name of the XML file
xmlFileName = "test.xml";
% Create a DOMWriter object to handle writing the XML document to a file
writer = matlab.io.xml.dom.DOMWriter;
% Write the XML document to the specified file using the writer object
writeToFile(writer, docNode, xmlFileName);
Note: matlab.io.xml.dom.DOMWriter was introduced in MATLAB R2021a.
You can refer to the resources below for more information:
0 Comments
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!