Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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
用PHP解析XML_Php_Xml_Parsing_Dom - Fatal编程技术网

用PHP解析XML

用PHP解析XML,php,xml,parsing,dom,Php,Xml,Parsing,Dom,我通常不需要做任何后端工作,但对于这个项目,我必须使用PHP解析XML,所以这对我来说是一种新的、非常复杂的工作。我需要在页面上显示第四个标记,我想我会使用getElementsByTagName,但问题是前面的三个标记是相同的,所以看起来像这样: <Person fname="John" lname="Smith"/> <Person fname="Frank" lname="Jones"/> <Person fname="Mike" lname="Jacks

我通常不需要做任何后端工作,但对于这个项目,我必须使用PHP解析XML,所以这对我来说是一种新的、非常复杂的工作。我需要在页面上显示第四个标记,我想我会使用getElementsByTagName,但问题是前面的三个标记是相同的,所以看起来像这样:

<Person fname="John" lname="Smith"/> 
<Person fname="Frank" lname="Jones"/> 
<Person fname="Mike" lname="Jackson"/> 
<Person fname="Jack" lname="Williams"/> 
<value no="50"/> 
<value no="60"/> 
<value no="70"/> 
基本上,是否有任何方法可以请求第四个标记中的属性值,而不管标记是什么或在它之前或之后是什么

任何帮助都将不胜感激——谢谢

编辑-我没有编写XML,我是从远程服务器请求的。

我关于XML的注释:

链接:

例如:

$xml='<p4wappremium>
    <servermessage>
        <providerref sid="123"/>
        <useractioninfo
            msisdn="48790300200"
            tid="12123123"
            stid="123123"
            pid="345345"
            bid="1"
          />
    </servermessage>
</p4wappremium>';

$xml = simplexml_load_string($xml);

foreach ($xml->providerref[0]->attributes() as $name -> $value) {
    ${$name}=$value;
}

foreach ($xml->useractioninfo[0]->attributes() as $name -> $value) {
    ${$name}=$value;
}
$xml='1!'
';
$xml=simplexml\u load\u字符串($xml);
foreach($xml->providerref[0]->attributes()作为$name->$value){
${$name}=$value;
}
foreach($xml->useractioninfo[0]->attributes()作为$name->$value){
${$name}=$value;
}
希望它对您的案例有用。

我关于XML的笔记:

链接:

例如:

$xml='<p4wappremium>
    <servermessage>
        <providerref sid="123"/>
        <useractioninfo
            msisdn="48790300200"
            tid="12123123"
            stid="123123"
            pid="345345"
            bid="1"
          />
    </servermessage>
</p4wappremium>';

$xml = simplexml_load_string($xml);

foreach ($xml->providerref[0]->attributes() as $name -> $value) {
    ${$name}=$value;
}

foreach ($xml->useractioninfo[0]->attributes() as $name -> $value) {
    ${$name}=$value;
}
$xml='1!'
';
$xml=simplexml\u load\u字符串($xml);
foreach($xml->providerref[0]->attributes()作为$name->$value){
${$name}=$value;
}
foreach($xml->useractioninfo[0]->attributes()作为$name->$value){
${$name}=$value;
}

希望它对您的案例有用。

好吧,我建议您重新组织您的“模式”。因为我觉得按顺序关联标记值很奇怪,就像你一样

为什么不呢

<Person fname="Mike" lname="Jackson" value="60"/>


相反

实际上,应用这些标记的方式似乎没有什么用处,甚至可能不是有效的XML。B/c您尝试解析的不是一个XMLDOM树,而只是一个列表。那么,为什么不自己编写一个列表解析器呢


如果您想使用DOM扩展名和getElementsByTagName(),那么根据,您将得到一个DOMNodeList对象,它允许您通过索引引用结果节点

我建议你重新组织你的“模式”。因为我觉得按顺序关联标记值很奇怪,就像你一样

为什么不呢

<Person fname="Mike" lname="Jackson" value="60"/>


相反

实际上,应用这些标记的方式似乎没有什么用处,甚至可能不是有效的XML。B/c您尝试解析的不是一个XMLDOM树,而只是一个列表。那么,为什么不自己编写一个列表解析器呢


如果您想使用DOM扩展名和getElementsByTagName(),那么根据,您将得到一个DOMNodeList对象,它允许您通过索引引用结果节点

我不是在写XML,所以我不能重新组织它,我是在从远程服务器获取它…我还应该补充一点,这个值不一定是特定于那个人的,它们只是为了这个练习的目的需要连接起来…我不是在写XML,所以我不能重新组织它,我正在从远程服务器获取它…我还应该补充一点,值不一定是特定于那个人的,它们只是为了本练习的目的需要连接起来…您如何知道必须获取第三个人元素的fname属性并将其与第二个value元素的no属性相关联?这只是一个给定的。。。总是那个人,总是那个价值观。所以我认为我真正寻找的是与getElementById类似的东西,除了id之外,它需要获取第四个人标记和第二个值标记,文档的结构永远不会改变,唯一容易改变的是属性中的值。。。有什么想法吗?你怎么知道必须获取第三人称元素的fname属性并将其与第二个value元素的no属性相关联?这只是一个给定的。。。总是那个人,总是那个价值观。所以我认为我真正寻找的是与getElementById类似的东西,除了id之外,它需要获取第四个人标记和第二个值标记,文档的结构永远不会改变,唯一容易改变的是属性中的值。。。有什么想法吗?