如何将xml文件?

8视图(30天)
马克Golberg
马克Golberg 2022年1月25日
回答: 西蒙·艾尔金2022年2月14日
嘿,
我使用
进口matlab.io.xml.dom。*
doc_A = parseFile(解析器,file_A_fullPath);
doc_B = parseFile(解析器,file_B_fullPath);
从file_A file_B复制节点。
我是这样做的:
  1. 发现现有的节点B,并删除它。
  2. 导入节点从A到B。
  3. 将节点附加到B
besically工作,但是:
1)从B删除节点后,我得到了一个空行。这个可以删除吗?(我知道xml并不关心,只是为了视觉清晰)
2)附加节点B后,节点是“封闭”不当,所以当多个运行它的时候,我得到一个视觉混合。请见附加图片。
这是一致的吗?基本上我的意思是,我想做somesort“\ n”(终点)后每个列表末尾的行动。(ModuleType)
同时,
谁能解释请readxml函数之间的区别和上面的方法?
DOMnode = xmlread (xmlfile);
docRootNode = getDocumentElement (DOMnode);
我怎么能使用importChild,列表末尾,removeChild DOMnode和/或docRootNode吗?

答案(1)

西蒙·艾尔金
西蒙·艾尔金 2022年2月14日
你可以找到空白的答案的问题,这是一个限制撒克逊XML处理器的链接, //www.tianjin-qmedu.com/matlabcentral/answers/94189-why-does-xmlread-introduce-extra-whitespace-into-my-xml-file [mathworks.com]
至于第二个问题,您可以使用下面的脚本:
进口matlab.io.xml.dom。*
进口matlab.io.xml.xpath。*
docA = parseFile(解析器,“a.xml”);
stripEmptyTextNodes (docA);
配置=评价(评估者/配置,docA);
modType =评价(评估者、“ModuleType”配置);
作用是:配置、modType);
作家= DOMWriter;
writer.Configuration。FormatPrettyPrint = true;
writeToFile(作家,docA a1.xml);
函数stripEmptyTextNodes(节点)
进口matlab.io.xml.dom。*
节点列表= getChildNodes(节点);
我= 0;
虽然我< getLength(节点列表)
孩子=项目(节点列表,我);
如果getNodeType(孩子)以核对node . text_node = =
如果isempty (strtrim (getTextContent(孩子)))
child.getParentNode () .removeChild(孩子);
我张=;
结束
结束
我=我+ 1;
stripEmptyTextNodes(孩子);
结束
结束

标签

s manbetx 845

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的