使用 PHP 简单 XML 元素将 XML 解析为 HTML
Parse XML to HTML with PHP SimpleXMLElement
我在使用 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>
标签 "Pages" 可以有任意数量的标签 "Url" 其他标签可能只有一个值,例如标签 "Name"。
阅读有关 SimpleXMLElement 的文章,我得到了以下代码:
$xmlparsed = new SimpleXMLElement($xml); //my xml is being sent as variable
为了显示单个值,我使用下面的代码没有问题:
<?php echo $xmlparsed->Response[0]->Campaign[0]->Overview[0]->Name;?>
一切正常。但是,当我尝试解析多行标签时,我只得到一行,每次刷新页面时,它都会给我一个不同的 "url" 值。这是我使用的代码:
<?php foreach ($xmlparsed->Response->Campaign->Pages as $Pages) {echo $Pages->Url, PHP_EOL;} ?>
根据 PHP 的网站:http://php.net/manual/en/simplexml.examples-basic.php 这应该有效,但实际上无效。
因为我不是 PHP 方面的专家,所以我在反复试验的基础上测试代码。
我做错了什么?
在此先感谢您的帮助。
您只有一个 Pages
,因此您只输入一次 foreach
。尝试在 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;
}
输出:
page01
page02
page03
您也可以使用XPath。
foreach( $xml->xpath( 'Response/Campaign/Pages/Url' ) as $url ) {
echo $url;
}
我在使用 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>
标签 "Pages" 可以有任意数量的标签 "Url" 其他标签可能只有一个值,例如标签 "Name"。
阅读有关 SimpleXMLElement 的文章,我得到了以下代码:
$xmlparsed = new SimpleXMLElement($xml); //my xml is being sent as variable
为了显示单个值,我使用下面的代码没有问题:
<?php echo $xmlparsed->Response[0]->Campaign[0]->Overview[0]->Name;?>
一切正常。但是,当我尝试解析多行标签时,我只得到一行,每次刷新页面时,它都会给我一个不同的 "url" 值。这是我使用的代码:
<?php foreach ($xmlparsed->Response->Campaign->Pages as $Pages) {echo $Pages->Url, PHP_EOL;} ?>
根据 PHP 的网站:http://php.net/manual/en/simplexml.examples-basic.php 这应该有效,但实际上无效。
因为我不是 PHP 方面的专家,所以我在反复试验的基础上测试代码。
我做错了什么?
在此先感谢您的帮助。
您只有一个 Pages
,因此您只输入一次 foreach
。尝试在 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;
}
输出:
page01
page02
page03
您也可以使用XPath。
foreach( $xml->xpath( 'Response/Campaign/Pages/Url' ) as $url ) {
echo $url;
}