我正在尝试遍历XML文件。基于xml文件中的值,我想更新另一个XML文件。我想获取“ mxcell”值及其属性。我尝试使用mxutil.parseXml()解析xml并以以下方式检索子节点。我将x的值作为nodelist [body]获取,其中body给解析器错误。
遍历xml的代码
var xmldoc = mxUtils.parseXml(nodes);
var x = xmldoc.documentElement.childNodes;
XML文件节点
<mxGraphModel>
<root>
<mxCell id="0"/>
<mxCell id="1" parent="0"/>
<mxCell id="Kn0cXeNcbUv7v0NK2pj5-1" value="" style="shape=mxgraph.bpmn.shape;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;align=center;perimeter=ellipsePerimeter;outlineConnect=0;outline=standard;symbol=general;" vertex="1" parent="1"><mxGeometry x="20" y="20" width="50" height="50" as="geometry"/>
</mxCell><mxCell id="Kn0cXeNcbUv7v0NK2pj5-2" value="" style="shape=mxgraph.bpmn.shape;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;align=center;perimeter=ellipsePerimeter;outlineConnect=0;outline=throwing;symbol=general;" vertex="1" parent="1"><mxGeometry x="20" y="90" width="50" height="50" as="geometry"/>
</mxCell>
</root>
</mxGraphModel>
我想在变量中检索每个“ mxcell”样式属性的值。
答案 0 :(得分:0)
我认为您的解析错误是由于您将节点直接传递给'mxUtils.parseXml'方法而造成的。 documentation指出您应该传递一个字符串作为参数。
考虑到这一点,您可以将XML作为字符串提供:
var doc = mxUtils.parseXml(
'<mxGraphModel>' +
'<root>' +
'<mxCell id="0"/>' +
'<mxCell id="1" parent="0"/>' +
'<mxCell id="Kn0cXeNcbUv7v0NK2pj5-1" value="" style="shape=mxgraph.bpmn.shape;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;align=center;perimeter=ellipsePerimeter;outlineConnect=0;outline=standard;symbol=general;" vertex="1" parent="1">' +
'<mxGeometry x="20" y="20" width="50" height="50" as="geometry"/>' +
'</mxCell>' +
'<mxCell id="Kn0cXeNcbUv7v0NK2pj5-2" value="" style="shape=mxgraph.bpmn.shape;html=1;verticalLabelPosition=bottom;labelBackgroundColor=#ffffff;verticalAlign=top;align=center;perimeter=ellipsePerimeter;outlineConnect=0;outline=throwing;symbol=general;" vertex="1" parent="1">' +
'<mxGeometry x="20" y="90" width="50" height="50" as="geometry"/>' +
'</mxCell>' +
'</root>' +
'</mxGraphModel>'
);
然后您可以获取mxCell
标签的样式。我正在生成一个对象,其ID为mxCell
作为键,style
属性为值:
var data = {};
doc.querySelectorAll('mxcell').forEach(function(node) {
data[node.id] = node.getAttribute('style');
});