matlab替换xml节点内容,如何让Matlab读取正确数量的xml节点

幕后的XML解析器为节点元素之间的所有空白创建#text节点.无论是否有换行符或缩进,它都会创建一个带有换行符的#text节点,并在节点的数据部分中跟随缩进空格.因此,在解析“ref”元素的子节点时提供的xml示例中,它返回5个节点

>节点1:带有换行符和缩进空格的#text

>节点2:“请求者”节点,其在数据部分中具有带有“John Doe”的#text子节点

>节点3:带有换行符和缩进空格的#text

>节点4:“项目”节点,其又在数据部分中具有带有“X”的#text子节点

>节点5:带有换行符和缩进空格的#text

此函数为您删除所有这些无用的#text节点.请注意,如果你有意拥有一个只由空格组成的xml元素,那么这个函数将删除它,但对于99.99%的xml情况,这应该可以正常工作.

function removeIndentNodes( childNodes )

numNodes = childNodes.getLength;

remList = [];

for i = numNodes:-1:1

theChild = childNodes.item(i-1);

if (theChild.hasChildNodes)

removeIndentNodes(theChild.getChildNodes);

else

if ( theChild.getNodeType == theChild.TEXT_NODE && ...

~isempty(char(theChild.getData())) && ...

all(isspace(char(theChild.getData()))))

remList(end+1) = i-1; % java indexing

end

end

end

for i = 1:length(remList)

childNodes.removeChild(childNodes.item(remList(i)));

end

end

像这样称呼它

tree = xmlread( xmlfile );

removeIndentNodes( tree.getChildNodes );

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值