使用php在特定xml同级子节点之前解析xml多同级子节点

使用php在特定xml同级子节点之前解析xml多同级子节点,php,arrays,xml,Php,Arrays,Xml,你好,斯塔克沃利安! 我试图在特定子节点之前解析多个mathml(xml)子节点,这是一种方法,可以循环,并为所有没有mspace作为名称的项创建一个数组 一旦名称等于mspace,创建一个新的空数组,并将其添加到所有这些结果的占位符数组$result 循环后,使用为数组项创建整个字符串 $xml1 = new SimpleXMLElement(file_get_contents('answer.xml')); $counter = 0; $result = []; foreach ($xml

你好,斯塔克沃利安!
我试图在特定子节点之前解析多个mathml(xml)子节点,这是
一种方法,可以循环,并为所有没有
mspace
作为名称的项创建一个数组

一旦名称等于
mspace
,创建一个新的空数组,并将其添加到所有这些结果的占位符数组
$result

循环后,使用为数组项创建整个字符串

$xml1 = new SimpleXMLElement(file_get_contents('answer.xml'));
$counter = 0;
$result = [];

foreach ($xml1->children() as $child) {
    if ($child->getName() === "mspace") {
        $result[++$counter] = [];
        continue;
    }
    $result[$counter][] = $child->saveXML();
}
$result = array_map(function($x){
    return implode("", $x);
}, $result);

print_r($result);

$array(0)=<mn>2</mn><mi>x</mi><mo>+</mo><mn>2</mn><mo>=</mo><mn>3</mn>;
$array(1)=<mn>2</mn><mi>x</mi><mo>=</mo><mn>3</mn><mo>-</mo><mn>2</mn>;
$array(2)=<mn>2</mn><mi>x</mi><mo>=</mo><mn>1</mn>;
$array(3)=<mi>x</mi><mo>=</mo><mfrac><mn>1</mn><mn>2</mn></mfrac>;
<?php

$xml1 = new SimpleXMLElement(file_get_contents('answer.xml'));
$xml1 = $xml1->asXml();
$dom = new DOMDocument;
$dom->loadXML($xml1);
$maths = $dom->getElementsByTagName('mspace');
$length = 0;
foreach ($maths as $math) {
$length++;
}


$root = simplexml_load_string($xml1);
for($i = 0; $i <= $length; $i++){
    foreach($root as $child)
    {
    if ($maths){ 
        $arrXml[] = $child->asXml();
         // break;
        }

    // 
    }
 print_r(array_values($arrXml));    
    break;
}
Array ( [0] => 2 [1] => x [2] => + [3] => 2 [4] => = [5] => 3 [6] => [7] => 2 [8] => x [9] => = [10] => 3 [11] => - [12] => 2 [13] => [14] => 2 [15] => x [16] => = [17] => 1 [18] => [19] => x [20] => = [21] => 12 );
$xml1 = new SimpleXMLElement(file_get_contents('answer.xml'));
$counter = 0;
$result = [];

foreach ($xml1->children() as $child) {
    if ($child->getName() === "mspace") {
        $result[++$counter] = [];
        continue;
    }
    $result[$counter][] = $child->saveXML();
}
$result = array_map(function($x){
    return implode("", $x);
}, $result);

print_r($result);