XML write set attribute with xml namespace

조회 수: 10 (최근 30일)
vivek patel
vivek patel 2023년 3월 9일
편집: Meet 2024년 9월 11일
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
Mihai
Mihai 2023년 3월 11일
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');
vivek patel
vivek patel 2023년 3월 16일
Hi,
I tried but unfortunately it is not working, i have tried in MATLAB 2016b and MATLAB 2021a versions. Is it working in some other versions ?

댓글을 달려면 로그인하십시오.

답변 (1개)

Meet
Meet 2024년 9월 11일
편집: Meet 2024년 9월 11일
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:
  1. DOMWriter: https://www.mathworks.com/help/matlab/ref/matlab.io.xml.dom.domwriter-class.html
  2. setAttributeNS: https://developer.mozilla.org/en-US/docs/Web/API/Element/setAttributeNS

카테고리

Help CenterFile Exchange에서 Structured Data and XML Documents에 대해 자세히 알아보기

태그

Community Treasure Hunt

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

Start Hunting!

Translated by