xpath XML and PHP4

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • CptDondo

    xpath XML and PHP4

    I am working on an embedded platform. I have php4 installed along with
    libxml, so I have working DOMXML and xpath stuff...

    But I can't figure out how to use it.

    I am trying to get the base node of a schedule; I've attached a small
    portion of my XML file below. What I would like to do is to get the
    root of a schedule, and then iterate with foreach through all of the
    children. This is the function I came up with and of course it doesn't
    work. I don't understand how I am supposed to work with the object that
    the xpath_eval[_expression] returns. I've also tried the child_nodes
    method and that fails as well.

    Thanks,

    --Yan

    function loadSchedule($p ivotID, $schedName, $schedNum) {
    $dom = domxml_open_fil e("/tmp/test.conf");
    $xpath = xpath_new_conte xt($dom);
    // find base node for our schedule
    $pat = '//root/pivot[@id="' . $pivotID . '"]/'
    . $schedName . '[@id="' . $schedNum . '"]';
    print $pat;
    $baseNode = xpath_eval($xpa th,$pat);
    var_dump($baseN ode);
    $lines = xpath_eval_expr ession($xpath,'/line',$baseNode );
    var_dump($lines );
    print "\nOK\n";
    foreach($lines->nodeset as $line) {
    var_dump($line) ;
    }
    }

    <root>
    <pivot id="1">
    <water id="1">
    <line id="1">
    <bearingTo>120. 0</bearingTo>
    <WetDry>1</WetDry>
    <FwdRev>0</FwdRev>
    <event>0</event>
    <speed>10</speed>
    </line>
    <line id="2">
    <bearingTo>180. 0</bearingTo>
    <WetDry>1</WetDry>
    <FwdRev>1</FwdRev>
    <event>0</event>
    <speed>45</speed>
    </line>
    </water>
    <pivot>
    </root>
  • petersprc

    #2
    Re: xpath XML and PHP4

    For a relative path, try the tag name without a leading slash:

    xpath_eval_expr ession($xpath,' line',$baseNode );

    More on absolute and relative location paths:

    Sorry! We can't seem to find the resource you're looking for


    CptDondo wrote:
    I am working on an embedded platform. I have php4 installed along with
    libxml, so I have working DOMXML and xpath stuff...
    >
    But I can't figure out how to use it.
    >
    I am trying to get the base node of a schedule; I've attached a small
    portion of my XML file below. What I would like to do is to get the
    root of a schedule, and then iterate with foreach through all of the
    children. This is the function I came up with and of course it doesn't
    work. I don't understand how I am supposed to work with the object that
    the xpath_eval[_expression] returns. I've also tried the child_nodes
    method and that fails as well.
    >
    Thanks,
    >
    --Yan
    >
    function loadSchedule($p ivotID, $schedName, $schedNum) {
    $dom = domxml_open_fil e("/tmp/test.conf");
    $xpath = xpath_new_conte xt($dom);
    // find base node for our schedule
    $pat = '//root/pivot[@id="' . $pivotID . '"]/'
    . $schedName . '[@id="' . $schedNum . '"]';
    print $pat;
    $baseNode = xpath_eval($xpa th,$pat);
    var_dump($baseN ode);
    $lines = xpath_eval_expr ession($xpath,'/line',$baseNode );
    var_dump($lines );
    print "\nOK\n";
    foreach($lines->nodeset as $line) {
    var_dump($line) ;
    }
    }
    >
    <root>
    <pivot id="1">
    <water id="1">
    <line id="1">
    <bearingTo>120. 0</bearingTo>
    <WetDry>1</WetDry>
    <FwdRev>0</FwdRev>
    <event>0</event>
    <speed>10</speed>
    </line>
    <line id="2">
    <bearingTo>180. 0</bearingTo>
    <WetDry>1</WetDry>
    <FwdRev>1</FwdRev>
    <event>0</event>
    <speed>45</speed>
    </line>
    </water>
    <pivot>
    </root>

    Comment

    Working...