在XML中进行字符串搜索后返回父节点 - PHP

I have an XML file like so:

<GenResponse>
  <Detail1></Detail1>
  <Detail2></Detail>
  <DataNodes>
    <DataNode>
      <NodeDetails1>
        <node4>Parrot Musky Truck Moo</node4>
        <node5>Tinker Singer Happy Fool</node5>
        <node6>
          <FurtherDetails>
            <Node>Musky</Node>
            <Node>Lorem Ipsum</Node>
          </FurtherDetails>
      </NodeDetails1>
      <NodeDetails2>ID</NodeDetails2>
    </DataNode>
    <DataNode>
      <NodeDetails1>
        <node4>Sky Star Panet Shoe</node4>
        <node5>Rusky Husky Musky Boo</node5>
      </NodeDetails1>
      <NodeDetails2>ID</NodeDetails2>
    </DataNode>
  </DataNodes>
</GenResponse>

I would like to know how I would inject a search string "Musky" to a PHP function and get back <DataNode>...</DataNode> & <DataNode>...</DataNode> back?

Essentially I would like to search a huge XML file for a string and return all the DataNode's which contain the string back.

If this is possible with SimpleXML it would be great. Else any other solution is also fine.

EDIT: Notice how "Musky" can be in different nodes under <DataNode>

use

$xmlStr = file_get_contents('data/your_XML_File.xml'); 
$xml = new SimpleXMLElement($xmlStr); 
// seach records by tag value: 
// find nodes with  text
$res = $xml->xpath("node2[contains(., 'Musky')]"); 
print_r($res); 

//For testing purpost just copy paste following code in editor , For testing , I didnt use separate xml file.

<?php
//$xmlStr = file_get_contents('test.xml'); 
$xmlStr = '<node1>
  <node2>
    <node3>
      <node4>Parrot Singer Truck Moo</node4>
      <node5>Tinker Musky Happy Fool</node5>
    </node3>
    <node7>ID</node7>
  </node2>
  <node2>
    <node3>
      <node4>Sky Star Panet Shoe</node4>
      <node5>Rusky Husky Musky Boo</node5>
    </node3>
    <node7>ID</node7>
  </node2>
</node1>';
$xml = new SimpleXMLElement($xmlStr); 
// seach records by tag value: 
// find nodes with  text
$res = $xml->xpath("node2[contains(., 'Musky')]"); 
echo "<pre>";
print_r($res); 

?>

It gives proper output , i tried

Array
(
    [0] => SimpleXMLElement Object
        (
            [node3] => SimpleXMLElement Object
                (
                    [node4] => Parrot Singer Truck Moo
                    [node5] => Tinker Musky Happy Fool
                )

            [node7] => ID
        )

    [1] => SimpleXMLElement Object
        (
            [node3] => SimpleXMLElement Object
                (
                    [node4] => Sky Star Panet Shoe
                    [node5] => Rusky Husky Musky Boo
                )

            [node7] => ID
        )

)

Use this code and you can find your search word.I have made it a function just pass your keyword and you will get your result,

function findWord($findVar)
{
    $catalog = simplexml_load_file("xmlfile.xml");

    $category = $catalog->node2;

    $found = 0;
    foreach($category as $c)
    {
        foreach($c->node3 as $node3)
        {
            $node4 = (string) ($node3->node4);
            $node5 = (string) ($node3->node5);
            if (stripos(strtolower($node4),strtolower($findVar)))
            {
                echo 'Found!!'.'<br/>';
                $found++;
            }
            if (stripos(strtolower($node5),strtolower($findVar)))
            {
                echo 'Found!!'.'<br/>';
                $found++;
            }
        }

        if (stripos(strtolower((string)$c->node7),strtolower($findVar)))
        {
            echo 'Found!!'.'<br/>';
            $found++;
        }   
    }
    if ($found == 0)
    {
        echo "No result";
    }
}

$findVar = 'Musky';
findWord($findVar);