我有一个BLOATED XML文件,我用它来生成一个图库,其中包含一些关于图片的信息。除了Actual needed NEW之外,还有大量的OLD条目,添加更多图片,但也创建了重复的条目。
<result>
<event>
<date>2015-04-14T22:19:02+02:00</date>
<type>OLD</type>
<value1>AAA</value1>
<id>changingIDwhatever</id>
<profile>
<url>/domainpart/SPECIFICNAME/?w=</url>
<name>SPECIFICNAME</name>
<value2>BBB</value2>
<value3>CCC</value3>
<value4>DDD</value4>
<image>
<url>http://domain.tld/path/to/the/image/320.jpg?1234-ab1cd2e345fg6789</url>
<width>320</width>
</image>
</profile>
</event>
<event>
<date>2015-04-14T22:19:02+02:00</date>
<type>NEW</type>
<value1>AAA</value1>
<id>changingIDwhatever</id>
<profile>
<url>/domainpart/ANOTHERNAME/?w=</url>
<name>ANOTHERNAME</name>
<value2>BBB</value2>
<value3>CCC</value3>
<value4>DDD</value4>
<image>
<url>http://domain.tld/path/to/the/image/320.jpg?1234-ab1cd2e345fg6789</url>
<width>320</width>
</image>
</profile>
</event>
<event>
<date>2015-04-14T22:19:02+02:00</date>
<type>NEW</type>
<value1>AAA</value1>
<id>changingIDwhatever</id>
<profile>
<url>/domainpart/SPECIFICNAME/?w=</url>
<name>SPECIFICNAME</name>
<value2>BBB</value2>
<value3>CCC</value3>
<value4>DDD</value4>
<image>
<url>http://domain.tld/path/to/the/image/320.jpg?1234-ab1cd2e345fg6789</url>
<width>320</width>
</image>
</profile>
</event>
</result>
我确实以非常基本的方式生成了一个非常简洁的布局。因为我对php完全没有任何了解,所以我通常基于skriptpieces,我发现它们的结合方式主要是我需要的结果。
<?php
//###################Config Start#########################
$memberid = "123456";
$maxAnzahl = 50;
$zaehler = 0;
$baseURL = "http://www.domain.tld";
//###################Config End#########################
$feed = simplexml_load_file('http://key:keypass@www.domain.tld/news/xml');
$events = $feed->events;
foreach ($events->event as $event) {
echo "<div class='4u'>";
echo "<article class='box style2'>";
if ($event->type == "newMember") {
echo "<a href='".$baseURL.$event->profile->url.$memberid."' class='image featured' target='_blank'><img src='" . $event->profile->image->url . "' alt='' /> </a>";
} else {
echo "<a href='".$baseURL.$event->profile->url.$memberid."' class='image featured' target='_blank'><img src='" . $event->image->url . "' alt='' /> </a>";
}
echo "<h3><a href='".$baseURL.$event->profile->url.$memberid."'>" . $event->profile->name . "</a></h3>";
echo "</article>";
echo "</div>";
$zaehler = $zaehler + 1;
if ($zaehler == $maxAnzahl) {
break;
}
}
?>
有人能够告诉我如何在那个skript中如何指定如何跳过所有OLD?
亲切的问候 Caylean
答案 0 :(得分:1)
我自己找到了解决方案叹息我对此视而不见,直到我收到第一个回复,再次检查我的问题并看到一个标记,我通常想改变它到处使它清除什么我需要。
在我最初的问题中,有一行“ if($ event-&gt; type ==”newMember“){”通常情况下,我必须将其更改为“NEW”,如我的示例所示,帮助那些想要帮助的人,看看它更容易......好吧,现在我看到了它,它让我一切都清楚了。
更改代码如:
<?php
//###################Config Start#########################
$memberid = "123456";
$maxAnzahl = 50;
$zaehler = 0;
$baseURL = "http://www.domain.tld";
//###################Config End#########################
$feed = simplexml_load_file('http://key:keypass@www.domain.tld/news/xml');
$events = $feed->events;
foreach ($events->event as $event) {
if ($event->type == "NEW") {
echo "<div class='4u'>";
echo "<article class='box style2'>";
echo "<a href='".$baseURL.$event->profile->url.$memberid."' class='image featured' target='_blank'><img src='" . $event->profile->image->url . "' alt='' /> </a>";
echo "<h3><a href='".$baseURL.$event->profile->url.$memberid."'>" . $event->profile->name . "</a></h3>";
echo "</article>";
echo "</div>";
} else {
echo "";
}
$zaehler = $zaehler + 1;
if ($zaehler == $maxAnzahl) {
break;
}
}
?>
完全给我我正在寻找的图像和内容。出于某种原因,我已经在代码中找到了解决方案,但它却以某种方式搞砸了。
无论如何,谢谢你的帮助和想法!
答案 1 :(得分:0)
对于像查询XML结构这样的任务,我更喜欢使用XPATH.
试试这样。我希望能为你效劳。
<?php
// Get the XML
//###################Config Start#########################
$memberid = "123456";
$maxAnzahl = 50;
$zaehler = 0;
$baseURL = "http://www.domain.tld";
//###################Config End#########################
$source = file_get_contents('http://key:keypass@www.domain.tld/news/xml');
// DOM document Creation
$doc = new DOMDocument;
$doc->loadXML($source);
// DOM XPath Creation
$xpath = new DOMXPath($doc);
// Get all NEW events ONLY
$events = $xpath->query('//result/event[text()="NEW"]');
// Count number of events
printf('There is %d events<br />', $events->length);
// List all events
for($i = 0; $i < ($events->length); $i++) {
$event = $events->item($i);
}
?>
答案 2 :(得分:0)