使用PHP SimpleXMLElement将XML解析为HTML

使用PHP SimpleXMLElement将XML解析为HTML,php,html,xml,parsing,simplexml,Php,Html,Xml,Parsing,Simplexml,我在SimpleXMLElement方面遇到了一些问题,我希望得到一些帮助 我阅读了有关SimpleXMLElement的内容,并构建了一个PHP页面来解析此XML: <?xml version='1.0'?> <AdXML> <Response> <Campaign> <Overview> <Name>strip</Name> &

我在SimpleXMLElement方面遇到了一些问题,我希望得到一些帮助

我阅读了有关SimpleXMLElement的内容,并构建了一个PHP页面来解析此XML:

<?xml version='1.0'?>
<AdXML>

<Response>
    <Campaign>
        <Overview>
            <Name>strip</Name>
                <Description>category</Description>
                <Status>L</Status>
        </Overview>
        <Pages>
            <Url>page01</Url>
            <Url>page02</Url>
            <Url>page03</Url>
        </Pages>
    </Campaign>
</Response>
</AdXML>
要显示单个值,我使用下面的代码没有问题:

<?php echo $xmlparsed->Response[0]->Campaign[0]->Overview[0]->Name;?>
Response[0]->Campaign[0]->Overview[0]->Name;?>
一切正常。但是当我试图用多行解析一个标记时,我只得到一行,每次刷新页面时,它都会给我一个不同的“url”值。这是我正在使用的代码:

<?php foreach ($xmlparsed->Response->Campaign->Pages as $Pages) {echo $Pages->Url, PHP_EOL;} ?>
Response->Campaign->Pages as$Pages){echo$Pages->Url,PHP\u EOL;}?>
根据PHP的网站:这应该是可行的,但事实并非如此

因为我不是PHP方面的专家,所以我在尝试和错误的基础上测试代码

我做错了什么


提前感谢您的帮助

您只有一个
页面
,因此您只能为每个
页面输入一次。尝试在
URL上循环

$xml = "<?xml version='1.0'?>
<AdXML>

<Response>
    <Campaign>
        <Overview>
            <Name>strip</Name>
                <Description>category</Description>
                <Status>L</Status>
        </Overview>
        <Pages>
            <Url>page01</Url>
            <Url>page02</Url>
            <Url>page03</Url>
        </Pages>
    </Campaign>
</Response>
</AdXML>";
$xmlparsed = new SimpleXMLElement($xml);
foreach ($xmlparsed->Response->Campaign->Pages->Url as $url) {
    echo $url, PHP_EOL;
}
您也可以使用

$xml = "<?xml version='1.0'?>
<AdXML>

<Response>
    <Campaign>
        <Overview>
            <Name>strip</Name>
                <Description>category</Description>
                <Status>L</Status>
        </Overview>
        <Pages>
            <Url>page01</Url>
            <Url>page02</Url>
            <Url>page03</Url>
        </Pages>
    </Campaign>
</Response>
</AdXML>";
$xmlparsed = new SimpleXMLElement($xml);
foreach ($xmlparsed->Response->Campaign->Pages->Url as $url) {
    echo $url, PHP_EOL;
}
page01
page02
page03
foreach( $xml->xpath( 'Response/Campaign/Pages/Url' ) as $url ) {
    echo $url;
}