使用PHP SimpleXMLElement将XML解析为HTML [英] Parse XML to HTML with PHP SimpleXMLElement

查看:125
本文介绍了使用PHP SimpleXMLElement将XML解析为HTML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我正在阅读关于SimpleXMLElement的内容,并且我构建了一个PHP页面来解析这个XML:

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

<回应>
< Campaign>
<概述>
<名称>带< /名称>
<说明>类别< /说明>
<状态> L< /状态>
< /概览>
<网页>
< Url> page01< / Url>
< Url> page02< / Url>
< Url> page03< / Url>
< / Pages>
< / Campaign>
< / Response>
< / AdXML>

标签Pages可以有任意数量的标签Url,其他标签可能只有一个值,例如标签Name。



阅读SimpleXMLElement,我得到了以下代码:

  $ xmlparsed = new SimpleXMLElement($ xml); //我的xml被作为变量发送

要显示单个值,我使用下面的代码问题:

 <?php echo $ xmlparsed-> Response [0]  - > Campaign [0]  - >概述[0]  - >名称;>? 

一切正常。但是当我尝试用多行解析一个标签时,我只得到一行,每次刷新页面时,都会给我一个不同的url值。这是我使用的代码:

 <?php foreach($ xmlparsed-> Response-> Campaign-> ; Pages as $ Pages){echo $ Pages-> Url,PHP_EOL;}?> 

根据PHP的网站: http://php.net/manual/en/simplexml.examples-basic.php 这应该可以工作,但事实并非如此。 p>

由于我不熟悉PHP,因此我正在以试错方式测试代码。



什么是我在这里做错了吗?



在此先感谢您的帮助。

解决方案

您只有一个 Pages code> foreach 一次。尝试循环 url

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

<回应>
< Campaign>
<概览>
< ;名称> strip< / Name>
< /概述>
<描述>类别< /描述>
<状态> L<页> ;
< 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


I am having some issues with SimpleXMLElement that I was hoping to get some help.

I was reading about SimpleXMLElement and I built a PHP page to parse this 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>

Tag "Pages" can have any number of tags "Url" other tags might have only one value, like the tag "Name" for example.

Reading about SimpleXMLElement I ended up with the following code:

$xmlparsed = new SimpleXMLElement($xml); //my xml is being sent as variable

To display single values I am using the code below without a problem:

<?php echo $xmlparsed->Response[0]->Campaign[0]->Overview[0]->Name;?>

Everything works fine. But when I try to parse a tag with multiple lines I get only one line, and everytime I refresh the page it gives me a different "url" value. This is the code I am using:

<?php foreach ($xmlparsed->Response->Campaign->Pages as $Pages) {echo $Pages->Url, PHP_EOL;} ?>

According to PHP's site: http://php.net/manual/en/simplexml.examples-basic.php this should work, but it isn't.

Since I am not expert on PHP I am testing code on a trial-and-error basis.

What am I doing wrong here?

thanks in advance for any help.

解决方案

You only have one Pages so you are only entering that foreach once. Try looping on the urls.

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

Output:

page01
page02
page03

这篇关于使用PHP SimpleXMLElement将XML解析为HTML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆