Matlab中的XPath不会给出任何结果

时间:2016-11-09 17:50:16

标签: java xml matlab xpath

我只是在使用Matlab搞乱XML和XPath。我有一个相当复杂的XML,但我只需要访问一个节点,并添加一些其他子节点。

这是XML的一部分:

<?xml version="1.0" encoding="UTF-8" ?>
<viper xmlns="http://lamp.cfar.umd.edu/viper#" xmlns:data="http://lamp.cfar.umd.edu/viperdata#">
  <config>
    <descriptor name="Information" type="FILE">
      <attribute dynamic="false" name="SOURCETYPE" type="http://lamp.cfar.umd.edu/viperdata#lvalue">
        <data:lvalue-possibles>
          <data:lvalue-enum value="SEQUENCE" />
          <data:lvalue-enum value="FRAMES" />
        </data:lvalue-possibles>
      </attribute>
      <attribute dynamic="false" name="NUMFRAMES" type="http://lamp.cfar.umd.edu/viperdata#dvalue" />
      <attribute dynamic="false" name="FRAMERATE" type="http://lamp.cfar.umd.edu/viperdata#fvalue" />
      <attribute dynamic="false" name="H-FRAME-SIZE" type="http://lamp.cfar.umd.edu/viperdata#dvalue" />
    </descriptor>
    <descriptor name="PLAYER" type="OBJECT">
      <attribute dynamic="false" name="Name" type="http://lamp.cfar.umd.edu/viperdata#svalue" />
      <attribute dynamic="true" name="Location" type="http://lamp.cfar.umd.edu/viperdata#bbox" />
    </descriptor>
  </config>
  <data>
    <sourcefile filename="C:/Users/XXX/Desktop/ViperGT/mountain.xgtf">
      <file id="0" name="Information">
        <attribute name="SOURCETYPE" />
        <attribute name="NUMFRAMES">
          <data:dvalue value="100" />
        </attribute>
        <attribute name="FRAMERATE">
          <data:fvalue value="1.0" />
        </attribute>
        <attribute name="H-FRAME-SIZE" />
        <attribute name="V-FRAME-SIZE" />
      </file>
      <object framespan="2:99" id="0" name="PLAYER">
        <attribute name="Name">
          <data:svalue value="1" />
        </attribute>
        <attribute name="Location">
          <data:bbox framespan="2:2" height="81" width="182" x="40" y="55" />
        </attribute>
      </object>
    </sourcefile>
  </data>
</viper>

因此我可以访问<data:bbox />阻止。

这是我的代码:

import javax.xml.xpath.*
factory = XPathFactory.newInstance();
xpath = factory.newXPath();
% compile and evaluate the XPath Expression
expression = xpath.compile('/viper/data/sourcefile/object//data');
% Read XML
gt = xmlread('myGT.xml');
objectNode = expression.evaluate(gt, XPathConstants.NODE);

任何帮助?

1 个答案:

答案 0 :(得分:1)

我认为您应该使用XPathConstants.NODESET而不是XPathConstants.NODE,因为您的xml中有多个data元素。