我正在解析以下XML文件:
testxml.xml
public void bind(Product product){
mBinding.getViewModel().setProduct(product);
mBinding.executePendingBindings();
}
我只对少数几个属性感兴趣,即我可以通过下面的代码获得的节点ID,数据键。但是,当我进入y:命名空间时,我什么都没得到。
xmlparser.php
<?xml version="1.0" encoding="UTF-8" standalone="no"?><document>
<node id="n0">
<data key="d6">
<y:GenericNode configuration="TEXT I WANT TO GET">
<y:Geometry height="56.030557066666574" width="181.68810666666667" x="638.4599149206349" y="143.24969103333325"/>
<y:Fill color="#FFCC66" color2="#FF9900" transparent="false"/>
<y:BorderStyle color="#000000" type="line" width="1.0"/>
<y:NodeLabel alignment="center" autoSizePolicy="node_width" configuration="CroppingLabel" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="34.265625" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="181.68810666666667" x="0.0" y="10.882466033333287">Text I want to Get<y:LabelModel>
<y:SmartNodeLabelModel distance="4.0"/>
</y:LabelModel>
<y:ModelParameter>
<y:SmartNodeLabelModelParameter labelRatioX="-0.5" labelRatioY="0.0" nodeRatioX="-0.5" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
</y:ModelParameter>
</y:NodeLabel>
</y:GenericNode>
</data>
</node>
我已经阅读过类似问题的先前答案,我根据这些答案采用了儿童方法。但是,我无法使其工作,我不知道如何实现其他一些方法,如声明命名空间和xpath方法。
非常感谢任何帮助。
答案 0 :(得分:0)
那是因为y:GenericNode
不是根元素的直接子元素,因此您不应该直接从$xml
访问它:
$xml->node->data->children('y', true)->GenericNode->attributes()->configuration;