使用PHP SimpleXMLElement将XML解析为HTML [英] Parse XML to HTML with PHP SimpleXMLElement
问题描述
我正在阅读关于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屋!