将xml文件转换为MATLAB结构,以便轻松访问数据。
Wouter Falkena (2020)。xml2struct(//www.tianjin-qmedu.com/matlabcentral/fileexchange/28518-xml2struct),MATLAB中央文件交换。检索。
1.8.0.0 | 修正了CDATA和注释结构字段中的小错误。 |
|
1.7.0.0 | 由于十莫速度的提升和CDATA和添加注释的支持。万博1manbetx |
|
1.5.0.0 | 该功能现在替换包含的元素和属性名 - 由_dash_。通过_dot_和:通过_colon_ |
|
1.4.0.0 | 属性解析速度提高了40% |
|
1.3.0.0 | 修改上传文件 |
|
1.2.0.0 | 删除了假设的文件名应该有一个“.XML”延伸 |
|
1.1.0.0 | 减少的处理时间大量的XML文件 |
启发:calciumImagingAnalysis,从谷歌地图下载升高(需要API密钥),xml2struct,有bug修复和新增功能,acampb311 / xml2struct,maxsich / loadSPE,显微图像浏览器(MIB),显微镜图像浏览器2(MIB2),prowlpush:用于MATLAB的Prowl通知,徒手前列腺注释,colladaParser,气象气象API连接器
恩斯特Uzhanskii(查看资料)
陈望(查看资料)
尼斯的工作!
Gabriele Mosaico(查看资料)
Laio Marinheiro(查看资料)
是什么人!我注意到我们已经有了一些解决上述“内存不足”问题的解决方案。万博 尤文图斯我通过在python中实现类似的代码来绕过这个问题。这可能会帮助一些人。遵循下面的代码:
###导入库
进口xml.etree.ElementTree为ET
导入numpy的为NP
进口scipy.io为间谍
xmltools类定义
类xmltools ():
“””
2020.04
@author:Laio Marinheiro
组织XML数据的结构,Python字典(这是annalogous一个matlab的
结构体)。这是受到xml2struct的启发。matlab的m。
这也使用
“””
def LoadXML(自我,xml_filename):
xml_tree = ET.parse(xml_filename)
xml_root = xml_tree.getroot()
返回xml_root
高清ChildProp(个体经营,父):
每个孩子的CHILD_NAME = []#名称
unique_child_names =[] #子元素的唯一名称
child_len ={} #每个子元素的长度(每个子元素的子元素个数)
child_idx ={} #父节点上的子节点索引
K = 0
对于孩子家长:
child_name.append (child.tag)
child_len [child.tag] = LEN(子)#不相干= /
child_idx[孩子。标记]= k
如果child.tag不unique_child_names:
unique_child_names.append(child.tag)
k = k + 1
对于unique_child_names中的unique_name:
k = 1时
在CHILD_NAME名称:
如果名称== UNIQUE_NAME:
child_len [unique_name] = k
k = k + 1
ChildProp = {}
ChildProp [ '名称'] = CHILD_NAME
ChildProp [' unique_names '] = unique_child_names
ChildProp [ 'len个'] = child_len
ChildProp [ '指数'] = child_idx
返回ChildProp
高清GetDict(个体经营,父):
字典= {}
如果len(父)== 0:#父是最后一个字段
如果parent.text不是无:
字典[ '文本'] = parent.text
其他:
Dict['Text'] = " #空字符串
else: #如果父节点不是最后一个,它有子节点
childprop = toolbox.ChildProp(父)
如果len(parent) == len(childprop['index']): # children是struct字段
对于孩子家长:
Dict[孩子。标记]= self.GetDict(孩子)
其他:#儿童是列表的元素(或清单)
unique_names =列表(childprop(“指数”). keys ())
用于unique_names: #中的list_name,用于每个列表
((childprop['len'][list_name],), dtype = np.object)
K = 0
对于孩子家长:
如果child.tag == LIST_NAME:
字典[LIST_NAME] [K] = self.GetDict(子)
k = k + 1
如果父母。鲜明! = {}:
字典[ '属性'] = parent.attrib
返回快译通
高清Dict2Mat(个体经营,xml_filename,字典):
spy.savemat(xml_filename [0:-4] + '垫。',汉语词典= { 'pythonxml':字典})
def xml2struct(自我,xml_filename):
xml_root = self.LoadXML(xml_filename)
xml_dict = {xml_root.tag:{}}
xml_dict [xml_root.tag] = self.GetDict(xml_root)
self.Dict2Mat (xml_filename xml_dict)
###实施例
工具箱= xmltools ()
xml_filename_str = 'your_filename.xml'
toolbox.xml2struct(xml_filename_str)
尼古拉斯·巴塔利亚(查看资料)
马尔钦Konowalczyk(查看资料)
恩斯特Uzhanskii(查看资料)
Hyunjin白南舜(查看资料)
Anne-Laure Guinet(查看资料)
谢谢!
Aryaa R(查看资料)
这何(查看资料)
svanimisetti(查看资料)
svanimisetti(查看资料)
CEM波拉特(查看资料)
EMMANOUIL(查看资料)
EMMANOUIL(查看资料)
瓦列里·(查看资料)
拉电脑(查看资料)
迈克尔Klukinov(查看资料)
萨科(查看资料)
大通纳尔逊(查看资料)
江诗丹顿Siriteanu(查看资料)
保罗Witsberger(查看资料)
阿斯比约恩贝格(查看资料)
Urvashi朋友(查看资料)
FURKAN KUCUK(查看资料)
MathWorks公司相比功能更好!
安德拉什AKOS Lengyel的(查看资料)
哈乔Kleingeld(查看资料)
它的工作原理,并且容易使用!
加雷思·劳埃德(查看资料)
工作开箱的。
马克 - 安托万Brossault(查看资料)
康斯坦丁Nasiotis(查看资料)
Yii开发伟立林(查看资料)
谢谢!!!
Rostislav Teryaev(查看资料)
伟大的工作!谢谢你!
邓勃(查看资料)
Farhod Mahmudkhojaev(查看资料)
Sowmiya佩谢奈克(查看资料)
在哪里可以找到xml2struct的输出文件
赞布罗塔Acunzo(查看资料)
焦阳(查看资料)
强大的和准确的
Kiarash阿希(查看资料)
我想知道是否有类似于这个脚本的python版本?
凯雷姆Pekergin(查看资料)
Raj裁缝(查看资料)
劳伦斯Bliek(查看资料)
练听力胡(查看资料)
做得好!
tanfeng(查看资料)
谢谢!
心汤(查看资料)
斯特凡·斯密特(查看资料)
好东西!非常感谢!
nealm(查看资料)
Noelia苏亚雷斯(查看资料)
此功能完美!非常非常感谢你!
虚电路(查看资料)
伟大的工作!谢谢
卡洛斯·卡斯特(查看资料)
作品完美的我来说,这是前人的精力MATLAB的一部分
亚当张(查看资料)
毛罗(查看资料)
应该是MATLAB的一部分吗
西蒙·塞茨(查看资料)
海梅·阿尔莫纳西德,CABALLER(查看资料)
米德(查看资料)
精美的作品和强劲。
尼斯的工作,谢谢!
Joerg布赫兹(查看资料)
一个国王(查看资料)
Nirav Ambaliya(查看资料)
超级。伟大的工作。
马克·蒂默(查看资料)
好了!正是我要找的!
杰弗里·克恩(查看资料)
不错的功能。谢谢你!
玛丽安Kersting(查看资料)
马克西姆的Sich(查看资料)
威廉R(查看资料)
尼斯提交!
我的建议是,除去线137,138和139:
NAME = matlab.lang.makeValidName(名称);
此MATLAB的功能将确保所有无效Matlab的名字用下划线代替。
Konst Apost(查看资料)
马尔萨塔赫里(查看资料)
马提亚Zunhammer(查看资料)
尼斯,默认情况下应包含在MATLAB。
张天(查看资料)
阿南德萨兰(查看资料)
Dhiraj Bhandary(查看资料)
布里奇特Tannian(查看资料)
拉克什Jasti(查看资料)
郑邱(查看资料)
Laio Marinheiro(查看资料)
杰里米Benichou(查看资料)
菲利普Glira(查看资料)
NenaV(查看资料)
似乎运作良好 - 只是想知道如何再次拯救结构传回的XML?我找不到这个在评论中提到。
丰富赛克斯(查看资料)
斯文马丁(查看资料)
修改XML文件非常有用
M.Abuasbeh(查看资料)
圣保罗丰泰(查看资料)
朱利安Hapke(查看资料)
真正有用的脚本,而是缓慢的大个XML时,xmlread只用总时间的1/10。
改善我的想法:
更改
如果(~ isempty (regexprep(文本。(textflag), [\ s] *,)))
至
如果所有的〜(isspace为(文字。(textflag)))
并获得因子2的总加速(在我的测试情况下,至少)
Alexey R。(查看资料)
谢谢你这么多!
埃克乌尔里希(查看资料)
非常感谢,伟大的工作
天龙马(查看资料)
谢谢
马修·墨菲(查看资料)
我不得不作出一些修改,让我的XML文件的工作。我会把他们的下方,但因为这是使用此文件类型我的第一次,可能会有所不同。
第95行是截至2017年3月7日的版本
儿童(名称)=文本。
这改写这一切的那存储在其中的数据的子节点,因为最后一个节点被解析为注释(即它只包含一个字符串)。其他节点包含持有一个字符串值的数值。这里是我的解决办法:
如果isfield(文本, '文本')
孩子。(名字)= str2num (text.Text);
其他
。儿童(名称)( '注释')= text.Comment。
结束
总的来说非常有用,这正是我在添加替换行之后所需要的。
谢谢!
穆罕默德Mousa(查看资料)
Yifei王(查看资料)
那很棒!!!非常感谢!!!
Hasenearl(查看资料)
ChrisDz(查看资料)
这是一个非常有用的脚本!我用它来读取AUTOSAR XML文件!在阅读AR-XML文件时,我发现了两个难题:
1.长替换文本为{'-'|':'|'。'}在xml标记中导致的问题是,matlab字段名将变得比63字符长!我将它们简化为{'_'|'c'|'d'}!帮助!
2.在XML注释的情况下<! - 注释 - >要在XML的文件中的脚本失败内部使用!我修复了这个问题!看看它!
替换:在函数内部:parseChildNodes(...)
%CDZ 2016年12月21日注释掉由于与问题
%XML-评论
如果%(〜的isEmpty(字段名(文本)))
%的儿童(名称){索引} =文本。
%结束
%CDZ 2016年12月21日增加了处理XML - 评论
如果(〜的isEmpty(文本)&& isstruct(文本))
如果发现(STRCMP(字段名(文本), '文本'))
。儿童(名称){索引}( '文本')= text.Text。
elseif找到(strcmp(字段名(文本),“评论”))
孩子。(名字){指数}。(“评论”)= text.Comment;
结束
结束
和
% CDz 2016-12-21由于问题被注释掉
%XML-评论
% if(~isempty(text) && ~isempty(fieldnames(text))
% children.(名称)=文本;
%结束
%CDZ 2016年12月21日增加了处理XML - 评论
如果(〜的isEmpty(文本)&& isstruct(文本))
如果发现(STRCMP(字段名(文本), '文本'))
。儿童(名称)( '文本')= text.Text。
elseif找到(strcmp(字段名(文本),“评论”))
。儿童(名称)( '注释')= text.Comment。
结束
结束
@沃特Falkena:如果你是interestd我可以为您提供该文件的完整副本,你可以更新这个脚本
罗迪Oldenhuis(查看资料)
做得好
汉斯·Mogensen(查看资料)
简单,非常有用。非常方便。
亮度AL-HARBAWEE(查看资料)
我是一名博士生,我需要在我的代码应用此函数来获取XML文件的属性
玛丽·安·哈里森(查看资料)
迈克Wehr(查看资料)
工作好了!尝试xml_toolbox,但是它在2014年就坏了。这是一个可靠的替代品。
Xiomara埃雷拉(查看资料)
我需要编辑一个xml文件
阿拉斯伊姆兰(查看资料)
CYÿ(查看资料)
我已经通过了问题,实施修复望去,增加了一些新功能的脚本,并在这里上传吧://www.tianjin-qmedu.com/matlabcentral/fileexchange/58700-xml2struct。也请尝试我的更新版本,让我知道如果它现在工作得更好。
Anael(查看资料)
尼尔的方法对我不起作用……
Anael(查看资料)
不能开箱即用。Stephane的方法非常有效!
也同样的问题塞巴斯蒂安有关意见和头。
基斯钩子(查看资料)
我收到“java.lang.OutOfMemoryError:GC开销超限”试图打开一个汉字字典文件时 -http://www.edrdg.org/kanjidic/kanjidic2.xml.gz
Anael(查看资料)
多米尼克Roszkowski(查看资料)
好,但对于大的XML文件相当缓慢。
卡兰吉尔(查看资料)
朱利安Cieplik(查看资料)
约阿夫(查看资料)
丹尼尔
你能更新代码吗?我也有同样的问题。
RONAK科斯(查看资料)
理查德·乌尔曼(查看资料)
感谢这个非常灵活的脚本!顶!
策普(查看资料)
这正是我要找的东西。
丹尼尔(查看资料)
谢谢Wouter,
我不是很感激你的回答。问题现在解决了。如果有人有同样的问题,我可以上传代码。
斯特凡(查看资料)
嗨,
发现一个错误:当有文字和孩子在同一个节点,该文本将覆盖儿童。
固定:
更换
如果(〜的isEmpty(字段名(文本)))
孩子。(名字){指数}=文本;
结束
通过:
如果isstruct(文本)
为FLD =字段名(文本)”
儿童(名称){索引}(FLD {1})=文本(FLD {1})。。。;
结束
结束
而同时更换:
如果(〜的isEmpty(文本)&&〜的isEmpty(字段名(文本)))
儿童(名称)=文本。
结束
通过:
如果isstruct(文本)
为FLD =字段名(文本)”
孩子。(名字)。(盛名{1})=文本。(盛名{1});
结束
结束
谢谢。
阿明Ghasem阿扎尔(查看资料)
superaga(查看资料)
Prabakaran [R(查看资料)
简单的使用和伟大的工作!!谢谢分享。
MOI(查看资料)
伊利亚Belevich(查看资料)
乌里·科恩(查看资料)
一个(查看资料)
运行较大的xml需要很长的时间。在代码的任何地方,我可以等待酒吧至少报告的进展给用户?我尝试了两个for循环,但这似乎不是瓶颈。
本杰明·福尔克(查看资料)
约尔格(查看资料)
凯文(查看资料)
非常简单的使用和它的工作。
亚历克斯(查看资料)
“安德鲁·威尔逊:从奥尼尔魏斯在前面的评论的修复/审查似乎解决这个问题,所以这将是伟大的看到,纳入更新!”感谢安德鲁·威尔逊
安德鲁•威尔逊(查看资料)
大部分的伟大工程,但节点的问题丢失发表评论时,出现在层次结构的同一级别是相当令人沮丧。从奥尼尔魏斯在前面的评论/查看修复似乎解决这个问题,所以这将是伟大的看到,纳入更新!
亚当·怀亚特(查看资料)
似乎除了所报告的塞巴斯蒂安·罗伊在14年9月10日,做工精细 - XML注释不工作(导致其他数据的丢失)
威廉·墨菲(查看资料)
今天晚上来处理一些XML数据下载该文件。工作只是罚款。
伯纳德(查看资料)
对不起,粘贴错了。
这里是能解决问题,我行154:
文本。(textflag) = char (getTextContent (theNode));
伯纳德(查看资料)
好东西。
至于说“未定义功能‘toCharArray’类型的‘双师型’输入参数。”错误:
对于我来说,努力改变管线154到
。文本(textflag)= CHAR(的getData(theNode))';
就像在xml2struct的早期版本中一样(在第153行代码的注释中提到)
克里斯FUNG(查看资料)
Sebastien罗伊(查看资料)
与直接使用xmlread相比,这节省了大量时间。但是,当出现文本时,子节点存在一个错误。子节点内容将被设置为文本,子节点的所有其他内容将丢失。注释作为文本处理,也会导致同样的问题。试图读取此xml将不会提供预期的结果:
<?XML版本= “1.0” 编码= “UTF-8”?>
<根>
< !——应该是一个良性的评论——>
<的MyStuff>有价值的数据的MyStuff>
根> < /
西蒙·杜Plooy(查看资料)
一些XML文件中的属性的开头哪个错误,因为不允许的字段名称有下划线。简单strrep解决了这个问题。
太棒了!
路易斯·马吉尔埃斯科瓦尔法尔孔(查看资料)
优秀的
弗雷德里克·(查看资料)
罗迪Oldenhuis(查看资料)
Timo Dorsam(查看资料)
simbaforrest(查看资料)
安德斯Bergaker(查看资料)
马克Mikofski(查看资料)
使用XML和使用json.org/java [1]静态XML.toJSONObject()方法[2],有一个在我的收存箱[3]的预编译jar文件或使用牛顿国王JSON.NET停止[4]这是已经通过预编译他和从CodePlex上[5]只需下载并解压,然后使用的版本为您的机器上的.NET框架。XML和JSON之间进行转换的文档[6]和在该SO交[7]中描述。见MATLAB文档的详细信息,在MATLAB使用Java [8]或.NET [9]。这是超级简单!
[1]http://json.org/java/
[2](http://json.org/javadoc/org/json/XML.html#toJSONObject(java.lang.String))
[3]https://dl.dropboxusercontent.com/u/19049582/JSON.jar
[4]http://james.newtonking.com/pages/json-net.aspx
[5]https://json.codeplex.com/
[6]http://james.newtonking.com/projects/json/help/index.html?topic=html/ConvertingJSONandXML.htm
[7]http://stackoverflow.com/a/814027/1020470
[8]//www.tianjin-qmedu.com/help/matlab/using-java-libraries-in-matlab.html
[9]//www.tianjin-qmedu.com/help/matlab/using-net-libraries-in-matlab.html
法比奥了Nery(查看资料)
我已经看到了一些其他用户报告这一问题,但无法找到如何解决此问题:
未定义功能“toCharArray”类型“双”的输入参数。
任何想法?
问候
Varoujan(查看资料)
工作得很好。
没有充分测试的空场情况下,像一些评论,但我得到了一个很好的结构,我的输入文件。
我感到失望的是类似的功能是不是建立在Matlab。单独xmlread和xmlwrite是这样的疼痛,以访问和/或更新的XML数据。
亚当(查看资料)
嗨,
感谢您的文件,它的伟大工程。
但我也有同样的问题,因为埃里克空数据字段。有人知道如何解决这一问题?
宇(查看资料)
比xml_read更快,推荐!
埃里克(查看资料)
感谢您的文件,但是我在与空数据字段的问题。
如果我有一个100x50的XML数据集,我可以很容易地导入到Excel中。然而,有一些字段是空的。例如,在(5,35:40)处,XML数据是空的。
当我使用xml2struct,然后尝试,并创建以相同的格式的单元阵列(100x50)40:50之间在5行中的数据,转移到35:45的位置和我留下5个的空的空间从45:50并且这样的数据被对准。
如何才能保持自己的原始文件位置处理空字段的任何想法?
谢谢!
罗西Vakasilimi(查看资料)
我只是想知道是否有人能确认我做的是正确的。当我想把xml转换成matlab数组时,我输入:
data=xml2struct('要转换的文件的名称');吗?这是所有吗?
迈克尔·皮尔兹 - 谢尔曼(查看资料)
我们遇到了Raoul Herzog报告的相同问题:对于类型为“double”的输入参数,未定义函数或方法“toCharArray”。有什么解决办法吗?
奥尼尔魏斯(查看资料)
对于评论错误@Sirius3,我改变了以下代码块:
如果(〜STRCMP(名字, '#文本')&&〜STRCMP(名字, '#注释')&&〜STRCMP(名称, '#cdata_dash_section'))
%XML允许相同的元素被定义多次,
把每一个放在不同的单元格中
如果(isfield(儿童,名))
如果(〜iscell(孩子。(名)))
将存在元素放入单元格式中
儿童(名称)= {儿童(名称)。}。
结束
指数=长度(孩子。(名字))+ 1;
%添加新元素
儿童(名称){索引} =儿童的。
如果(〜的isEmpty(字段名(文本)))
孩子。(名字){指数}=文本;
结束
如果(〜的isEmpty(ATTR))
孩子。(名字){指数}。(“属性”)= attr;
结束
其他
%前所未知的(新)元素添加到结构
孩子。(名)=蔡尔兹;
如果(〜的isEmpty(文本)&&〜的isEmpty(字段名(文本)))
儿童(名称)=文本。
结束
如果(〜的isEmpty(ATTR))
儿(名称)( '属性')=属性。;
结束
结束
其他
至
如果(〜STRCMP(名字, '#文本')&&〜STRCMP(名字, '#注释')&&〜STRCMP(名称, '#cdata_dash_section'))
%XML允许相同的元素被定义多次,
把每一个放在不同的单元格中
如果(isfield(儿童,名))
如果(〜iscell(孩子。(名)))
将存在元素放入单元格式中
儿童(名称)= {儿童(名称)。}。
结束
指数=长度(孩子。(名字))+ 1;
%添加新元素
儿童(名称){索引} =儿童的。
textFieldNames =字段名(文本);
对于t = 1:长度(textFieldNames)
textFieldName = textFieldNames {吨};
儿童(名称){索引}(textFieldName)=文本(textFieldName)。;
结束
如果(〜的isEmpty(ATTR))
孩子。(名字){指数}。(“属性”)= attr;
结束
其他
%前所未知的(新)元素添加到结构
孩子。(名)=蔡尔兹;
如果(〜的isEmpty(文本)&&〜的isEmpty(字段名(文本)))
textFieldNames =字段名(文本);
numTextFieldNames =长度(textFieldNames);
对于i = 1:numTextFieldNames
thisFieldName = textFieldNames {};
孩子。(名字)。(thisFieldName) =文本。(thisFieldName);
结束
结束
如果(〜的isEmpty(ATTR))
儿(名称)( '属性')=属性。;
结束
结束
其他
现在,当一个注释被解析的孩子。(名称)属性没有吹走。
Sirius3(查看资料)
错误:子节点迷路,当它们之间存在着意见。(线95)
Gledi(查看资料)
首先感谢优秀的代码。
我根据小区有一个“小”问题。在你的代码,如果比你创建一个单元格,否则不会有更多的不止一个孩子。我应该改变有情况:即使结点只有一个孩子比我创建了一个单元(一个元素)
马修(查看资料)
工作对我非常好。非常感谢。
拉乌尔·赫尔佐格(查看资料)
xml2struct中似乎有一个错误:
如果需要,我可以为你提供相应的XML文件。
???类型为“double”的输入参数的未定义函数或方法“toCharArray”。
误差在==> xml2struct> parseAttributes在174
STR = toCharArray(的toString(项目(theAttributes,计数-1)))';
误差在==> xml2struct> getNodeData在141
attr = parseAttributes (theNode);
错误在==> xml2struct>parseChildNodes at 72
[文本、名字、attr,孩子,textflag] = getNodeData(育);
误差在==> xml2struct> getNodeData在147
[蔡尔兹、文本textflag] = parseChildNodes (theNode);
错误在==> xml2struct>parseChildNodes at 72
[文本、名字、attr,孩子,textflag] = getNodeData(育);
误差在==> xml2struct> getNodeData在147
[蔡尔兹、文本textflag] = parseChildNodes (theNode);
错误在==> xml2struct>parseChildNodes at 72
[文本、名字、attr,孩子,textflag] = getNodeData(育);
误差在==> xml2struct> getNodeData在147
[蔡尔兹、文本textflag] = parseChildNodes (theNode);
错误在==> xml2struct>parseChildNodes at 72
[文本、名字、attr,孩子,textflag] = getNodeData(育);
误差在==> xml2struct> getNodeData在147
[蔡尔兹、文本textflag] = parseChildNodes (theNode);
错误在==> xml2struct>parseChildNodes at 72
[文本、名字、attr,孩子,textflag] = getNodeData(育);
误差在==> xml2struct> getNodeData在147
[蔡尔兹、文本textflag] = parseChildNodes (theNode);
错误在==> xml2struct>parseChildNodes at 72
[文本、名字、attr,孩子,textflag] = getNodeData(育);
误差在==> xml2struct> getNodeData在147
[蔡尔兹、文本textflag] = parseChildNodes (theNode);
错误在==> xml2struct>parseChildNodes at 72
[文本、名字、attr,孩子,textflag] = getNodeData(育);
误差在==> xml2struct> getNodeData在147
[蔡尔兹、文本textflag] = parseChildNodes (theNode);
错误在==> xml2struct>parseChildNodes at 72
[文本、名字、attr,孩子,textflag] = getNodeData(育);
误差在==> xml2struct> getNodeData在147
[蔡尔兹、文本textflag] = parseChildNodes (theNode);
错误在==> xml2struct>parseChildNodes at 72
[文本、名字、attr,孩子,textflag] = getNodeData(育);
误差在==> xml2struct> getNodeData在147
[蔡尔兹、文本textflag] = parseChildNodes (theNode);
错误在==> xml2struct>parseChildNodes at 72
[文本、名字、attr,孩子,textflag] = getNodeData(育);
误差在==> xml2struct> getNodeData在147
[蔡尔兹、文本textflag] = parseChildNodes (theNode);
错误在==> xml2struct>parseChildNodes at 72
[文本、名字、attr,孩子,textflag] = getNodeData(育);
错误的==>在57 xml2struct
S = parseChildNodes(XDOC);
小虎(查看资料)
伊万·斯米尔诺夫(查看资料)
其中一个是我个人遇到的问题是,xml2struct不能处理CDATA块。
它可以很容易固定,替换为67行:
如果(〜STRCMP(名字, '#文本')&&〜STRCMP(名字, '#注释')&&〜STRCMP(名称, '#cdata_dash_section'))
和线94与:
(strcmp(name,'#text') || strcmp(name,'# cdata_dash_section'))
否则效果很好,谢谢。
阿里(查看资料)
太好了!我拉着头发从XML文件中读取数字,只用了一分钟
凯文MOERMAN(查看资料)
对于小文件非常有用。我测试了一些包含>100000条目的较大文件,这大约需要178秒。
凯文MOERMAN(查看资料)
布莱德(查看资料)
沃特Falkena(查看资料)
谢谢你的建议,万纳先生。我已经更新了文件,目前正在MATLAB Central审核中。它很快就会出现在这里。
阿德里安·沃纳(查看资料)
谢谢你的工作。
您可能希望通过以下方法替换第152-154行,从而将属性解析速度提高约40%:
str = theAttributes.item(把1).toString.toCharArray () ';
k = strfind (str, ' = ');
attr_name = regexprep(STR(1:(K(1)-1)), '[ - :.]', '_');
属性。(attr_name) = str (k (1) + (2): (end-1));
标记(查看资料)
谢谢,您的汽车领域的命名系统为我工作的伟大的工作,从XML文件解析出数据。
伯纳德(查看资料)
谢谢!我最后遇到了一个工具,它可以从一个ISO19115/19139 xml文件中提取信息。
若昂·恩里克斯(查看资料)
简单,工作得很好!该结构是一个有点冗长,但他们应该是通过我的节目无论如何分析;任何企图瓦解一些嵌套结构的只会减慢代码(有些类似意见做到这一点,但很慢)。谢谢!
克里希南苏雷什(查看资料)
由于诉了!我用它来读取的Collada文件(几何文件谷歌素描时)。工作就像一个魅力!
沃特Falkena(查看资料)
你是正确的。我已经删除了'。xml的扩展assumption, unless the file can not be found. The update file is currently under review by MATLAB Central and should appear here soon.
马蒂厄(查看资料)
警告:所有XML文件都没有'。xml的扩展
乔安妮(查看资料)
第一次尝试加载OSM数据文件。
TideMan(查看资料)
我被撕裂我的头发试图找出如何自动访问一个.xml文件中一个很小的部分数据的,直到我发现这个程序。
柳井(查看资料)