Chỉ vì tò mò, sau khi nhận được XML của bạn (Tôi hy vọng tôi didnt't tiêu diệt nó trong quá trình này - Tôi sẽ xem liệu tôi có thể chỉnh sửa các OP để sửa chữa nó):
- bạn có đưa mô tả vào chuỗi không?
Những gì tôi có nghĩa là bạn có thể sử dụng này:
$xml = simplexml_load_string($str);
foreach ($xml->channel->item as $item) {
var_dump($item->description);
}
Nhưng nó sẽ chỉ giúp bạn rằng:
object(SimpleXMLElement)[5]
object(SimpleXMLElement)[3]
Mà không phải là đẹp ...
Bạn cần truyền dữ liệu vào chuỗi, như sau:
$xml = simplexml_load_string($str);
foreach ($xml->channel->item as $item) {
var_dump((string)$item->description);
}
Và bạn sẽ có được giới thiệu:
string '
This is one of the content that I need printed on the screen, but nothing is happening. Please, please...output something... <br /><br /> <b>Showing</b>: 2 weeks<br /> <b>Starting On</b>: August 7, 2009 <br /> <b>Posted On</b>: August 7, 2009 <br />
<a href="http://www.mysite.com">click to view</a>
' (length=329)
string '
Another content...This is another of the content that I need printed on the screen, but nothing is happening. Please, please...output something... <br /><br /> <b>Showing</b>: 2 weeks<br /> Starting On: August 7, 2009 <br /> <b>Posted On</b>: August 7, 2009
;
' (length=303)
(Sử dụng trim
về những người có thể chứng minh hữu ích, btw, nếu bạn XML là thụt vào)
khác ... Vâng , có lẽ chúng tôi sẽ cần mã php của bạn (ít nhất, sẽ hữu ích khi biết cách bạn nhận được thẻ description
;-))
EDIT
Cảm ơn XML định dạng lại!
Nếu tôi đi đến Pastebin, trong textarea ở dưới cùng của trang, có một khoảng trắng ở đầu XML, trước khi <?xml version="1.0" encoding="utf-8"?>
Nếu bạn đã là một trong dữ liệu XML thực sự của bạn, nó sẽ là một nguồn của vấn đề: nó không phải là hợp lệ XMl (khai báo XML phải là điều đầu tiên trong dữ liệu XML).
Bạn sẽ nhận được lỗi như thế này một:
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : XML declaration allowed only at the start of the document
Bạn có thể kiểm tra xem?
Và nếu vấn đề ở đây, bạn nên kích hoạt error_reporting
và display_errors
;-) Điều đó sẽ hữu ích!
EDIT sau khi xem xét các file PHP:
Trong bạn cho vòng lặp, bạn đang làm điều này để có được dữ liệu mô tả của bạn:
$item_desc = $x->item($i)->getElementsByTagName('description')->item(0)->childNodes->item(0)->nodeValue;
mô tả không chứa bất kỳ childNode , Tôi sẽ nói ; những gì về việc sử dụng nó nodeValue trực tiếp?
Như thế này:
$item_desc = $x->item($i)->getElementsByTagName('description')->item(0)->nodeValue;
Có vẻ như được làm việc tốt hơn theo cách này :-)
Là một sidenote, bạn có thể có thể làm tương tự cho các thẻ khác, Tôi cho rằng; ví dụ: điều này dường như cũng đang hoạt động:
$item_title=$x->item($i)->getElementsByTagName('title')->item(0)->nodeValue;
$item_link=$x->item($i)->getElementsByTagName('link')->item(0)->nodeValue;
Điều này cung cấp gì cho bạn?
EDIT Một: và đây là đoạn code tôi có lẽ sẽ sử dụng:
$xmlDoc = new DOMDocument();
$xmlDoc->loadXML($str); // I changed that because I have the XML data in a string
//get elements from "<channel>"
$channel = $xmlDoc->getElementsByTagName('channel')->item(0);
$channel_title = $channel->getElementsByTagName('title')->item(0)->nodeValue;
$channel_link = $channel->getElementsByTagName('link')->item(0)->nodeValue;
$channel_desc = $channel->getElementsByTagName('description')->item(0)->nodeValue;
//output elements from "<channel>"
echo "<p><a href='" . $channel_link . "'>" . $channel_title . "</a>";
echo "<br />";
echo $channel_desc . "</p>";
//get and output "<item>" elements
$x = $xmlDoc->getElementsByTagName('item');
for ($i=0 ; $i<=1 ; $i++) {
$item_title = $x->item($i)->getElementsByTagName('title')->item(0)->nodeValue;
$item_link = $x->item($i)->getElementsByTagName('link')->item(0)->nodeValue;
$item_desc = $x->item($i)->getElementsByTagName('description')->item(0)->nodeValue;
echo ("<p><a href='" . $item_link
. "'>" . $item_title . "</a>");
echo ("<br />");
echo ($item_desc . "</p>");
echo' <p />';
}
Note Tôi có dữ liệu XML trong một chuỗi, và tôi không cần phải lấy nó từ một URL, vì vậy tôi đang sử dụng phương pháp loadXML
chứ không phải load
.
Sự khác biệt lớn nhất là tôi đã xóa một số quyền truy cập của trẻ em mà tôi cảm thấy không cần thiết.
Điều này có vẻ ổn với bạn không?
Bạn cũng có thể đăng phần mã phụ trách phân tích cú pháp dữ liệu XML không? Có thể lỗi trong mã và không có trong dữ liệu ^^ –
Bạn vẫn có mã XML và PHP phải không? Pastebin đã xóa các mục nhập của bạn. Nếu bạn có chúng, bạn có thể chỉnh sửa câu hỏi để đưa chúng trở lại (không đặt chúng trở lại trên pastebin, đặt chúng vào văn bản câu hỏi thay thế.) Nếu bạn không thể, câu hỏi sẽ bị xóa. Cảm ơn. –
id dán không xác định! – GoodSp33d