Reputation: 61
I have 'simple' problem :-)
I'm reading large XML file using this:
$node = new SimpleXMLElement($reader->readOuterXML());
$node have elements severity, class... I can compare them like this:
if($node->severity==WARNING){
Or show them like this:
echo $node->severity;
What I want to prepare if statements in advance reading posts variables like this:
if(isset($_POST['Severity']) && !EMPTY($_POST['Severity'])){
$Severity[]=$_POST['Severity'];
foreach($Severity as $Severityval){
foreach($Severityval as $Severityvalues){
$searchquery .= '($node->Severity==' .$Severityvalues. ') || ';
}
}
}
Then I want to use $searchquery inside XML reader:
if($searchquery){
echo $node->severity;
}
But, this always return true and everything is shown :-(
My variable is properly created, if I echo it shows ($node->Severity==WARNING)
Maybe screen shot can explain my problem:
Thanks in advance
Upvotes: 0
Views: 77
Reputation: 937
Try this :
if(isset($_POST['Severity']) && !EMPTY($_POST['Severity'])) {
$Severity[] = $_POST['Severity'];
$i = 0;
foreach($Severity as $Severityval)
{
foreach($Severityval as $Severityvalues)
{
if ($node->Severity == $Severityvalues) {
$i++;
}
}
}
if ($i > 0) {
echo $node->severity;
}
}
EDIT : I understand fully the problematic, if you had loaded one per one XML, you can do that (for each selected on node value - example work for severity, it's a good sample) :
$root_node = $your_var;
if(isset($_POST['Severity']) && strlen(trim($_POST['Severity'])) > 0) {
$severities_selected = array_values($_POST['Severity']);
$severity = (string) $root_node->severity;
if (in_array($severity, $severities_selected)) {
echo "This XML contains one selected severity (".$severity.")";
}
}
Hope this helps !!
Upvotes: 1