使用PHP显示XML中匹配的所有项

使用PHP显示XML中匹配的所有项,php,xml,match,Php,Xml,Match,这是我的XML文件,名为:full.XML 我需要你的帮助。我需要一个打开full.xml的PHP脚本 并且仅显示具有.email的节点的所有值 我想要的输出示例: sales@company1.com sales@company2.com sales@company3.com 谢谢我会非常感谢你的 编辑 XML的设计不是很聪明。使用此xpath表达式,可以选择名称末尾带有.email的所有节点: $xml = simplexml_load_string($x); // assume X

这是我的XML文件,名为:full.XML

我需要你的帮助。我需要一个打开full.xml的PHP脚本 并且仅显示具有.email的节点的所有值

我想要的输出示例: sales@company1.com sales@company2.com sales@company3.com

谢谢我会非常感谢你的

编辑


XML的设计不是很聪明。使用此xpath表达式,可以选择名称末尾带有.email的所有节点:

$xml = simplexml_load_string($x); // assume XML in $x
$results = $xml->xpath("//*[substring(name(),string-length(name())-" . (strlen('.email') - 1) . ") = '.email']");
->结果是一个包含选定节点的数组

顺便说一句:如果您有机会更改XML的结构,请避免在节点名称中组合信息,例如,但要这样做:

...
<companies>
    <company id="1">
        <email>info@company1.com</email>
        <tel>+498988123456</tel>
        <name>somename</name>
    </company>
    <company id="2">
        <email>info@company2.com</email>
        <tel>+498988123457</tel>
        <name>someothername</name>
    </company>
</companies>
....

它将更易于阅读和分析。

请向我们展示您尝试过的代码,我们将尽可能提供帮助。这里是一个很好的起点:我尝试过:$Connect=simplexml\u load\u filefull.xml;返回$Connect->table[0]->*.email;结果是什么?它什么都不知道。但是这个:$Connect=simplexml\u load\u filefull.xml;返回$Connect->table[0]->company1.email;此脚本:显示:sales@company1.comHey这是个好主意!我怎么能做出这样的东西?@Manuel如果你从其他地方得到XML,你就做不到。如果您是XML的作者,您可以。请考虑一下我的答案,点击左边的滴答声。
...
<companies>
    <company id="1">
        <email>info@company1.com</email>
        <tel>+498988123456</tel>
        <name>somename</name>
    </company>
    <company id="2">
        <email>info@company2.com</email>
        <tel>+498988123457</tel>
        <name>someothername</name>
    </company>
</companies>
....