Parsing XML with PHP


Parsing XML with PHP

我通常不需要做任何后端工作,但对于这个项目,我必须使用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"/> 

以下是我想在HTML页面中使用第四个标签中的第一个属性和第二个标签中属性输出的内容:

Mike: 60

基本上,有没有任何方法可以请求第四个标记中的属性值,而不管标记是什么,或者在它之前或之后是什么?

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

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

关于XML:的笔记

链接:http://php.net/simplexml.examples-basic

示例:

$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;
}

希望它对你的案子有用。

我建议您重新组织您的"模式"。因为在我看来,像你一样,按顺序关联标签值很奇怪。

为什么不

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

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

相反?

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

如果你想使用DOM扩展和getElementsByTagName(),那么根据手册,你会得到一个DOMNodeList对象,它允许你通过索引引用结果节点!?