Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在XML文件中搜索-PHP_Php_Xml - Fatal编程技术网

在XML文件中搜索-PHP

在XML文件中搜索-PHP,php,xml,Php,Xml,我的XML看起来像这样 <root lastUpdated="20180101120330" ttl="24"> <Parent1>...</Parent1> <Parent2> <sub parm1="google.com" parm2="email@email.com" parm3="5343243434" parm4="google" parm5="876787" parm6="" parm7="ACTIVE">...</s

我的XML看起来像这样

<root lastUpdated="20180101120330" ttl="24">
<Parent1>...</Parent1>
<Parent2>
<sub parm1="google.com" parm2="email@email.com" parm3="5343243434" parm4="google" parm5="876787" parm6="" parm7="ACTIVE">...</sub>
<sub parm1="yahoo.com" parm2="email2@email.com" parm3="4434343" parm4="yahoo" parm5="232322" parm6="" parm7="ACTIVE">...</sub>
<sub parm1="facebook.com" parm2="email3@email.com" parm3="222334" parm4="facebook" parm5="12233" parm6="" parm7="ACTIVE">...</sub>
</Parent2>
</root>

...
...
...
...
我想寻找parm3,如果它匹配,它应该返回parm1。 XML存储在本地目录中。

您可以对
中的
项使用xpath查询,如
/root/Parent2/sub

或者,对于
元素中的
元素,例如
/root/*[以(name(),'Parent')]开头]/sub

然后,您可以使用

$data=parm3==“4434343”){
echo$a[$i]->attributes()->parm1;
}
}

在询问之前,您试过什么吗?可能搜索“如何用PHP读取XML”或其他内容。使用xpath
//sub[@parm3=“4434343”]/@parm1
可能重复的
$data = <<<DATA
<root lastUpdated="20180101120330" ttl="24">
    <Parent1></Parent1>
    <Parent2>
        <sub parm1="google.com" parm2="email@email.com" parm3="5343243434" parm4="google" parm5="876787" parm6="" parm7="ACTIVE">...</sub>
        <sub parm1="yahoo.com" parm2="email2@email.com" parm3="4434343" parm4="yahoo" parm5="232322" parm6="" parm7="ACTIVE">...</sub>
        <sub parm1="facebook.com" parm2="email3@email.com" parm3="222334" parm4="facebook" parm5="12233" parm6="" parm7="ACTIVE">...</sub>
    </Parent2>
</root>
DATA;


$elm= new SimpleXMLElement($data);
$a = $elm->xpath('/root/Parent2/sub');

for ($i = 0; $i < count($a); $i++) {
    if ((string)$a[$i]->attributes()->parm3 === "4434343") {
        echo $a[$i]->attributes()->parm1;
    }
}