سؤال

لقد حصلت على البرنامج النصي PHP.في أغلب الأحيان يقوم البرنامج النصي بإرجاع html، وهو ما يعمل بشكل جيد، ولكن في إحدى المناسبات (المعلمة ?Format=XML) يقوم البرنامج النصي بإرجاع XML بدلاً من HTML.

هل هناك أي طريقة لتغيير نوع mime الذي تم إرجاعه لمخرجات php بسرعة من text/html إلى text/xml أو application/xml؟

هل كانت مفيدة؟

المحلول

header('Content-type: application/xml');

مزيد من المعلومات متاحة في وثائق PHP ل header()

نصائح أخرى

تعيين Content-Type رأس:

header('Content-Type: text/xml');

على الرغم من أنه ربما ينبغي عليك استخدام "application/xml" بدلاً من ذلك.

يجب عليك إرسال أ Content-Type header قبل قمت بإرسال أي الإخراج.

header('Content-Type: text/xml');

سأجيب على التحديث لأن الإجابات السابقة جيدة.
لقد قرأت أن Internet Explorer معروف جيدًا بتجاهل رؤوس نوع Mime (في معظم الأوقات؟) للاعتماد على محتوى الملف (مما قد يسبب مشاكل في بعض الحالات).

امممم، لقد قمت باختبار بسيط:

<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root><foo a="b">Tada</foo></root>';
?>

يعرضه Internet Explorer 6 بشكل صحيح بتنسيق XML.حتى لو قمت بإزالة إعلان XML.
يجب عليك الإشارة إلى الإصدار الذي به مشكلة.

في الواقع، كما كتبت أعلاه، مع IE (6 على الأقل)، لا تحتاج حتى إلى نوع محتوى، فهو يتعرف على بيانات XML ويعرضها كشجرة.هل XML الخاص بك صحيح؟

[تحديث] تمت تجربة ذلك باستخدام IE7 أيضًا، مع إضافة ?format=xml أيضًا، مع الاستمرار في عرض XML بشكل صحيح.إذا قمت بإرسال XML مشوه، يعرض IE خطأ.تم اختباره على نظام WinXP Pro SP2+

header('Content-Type: application/xml; charset=utf-8');

يمكنك إضافة الترميز أيضًا في نفس السطر.أضفت utf-8، وهو الأكثر شيوعا.

لقد استخدمت للتو ما يلي:
ملحوظة:أنا أستخدم "i" لامتداد SQL المحسن.

Start XML file, echo parent node
header("Content-type: text/xml");
echo "<?xml version='1.0' encoding='UTF-8'?>";
echo "<marker>";

قم بالتكرار عبر الصفوف، وطباعة عقد XML لكل منها

while ($row = @mysqli_fetch_assoc($results)){
  // Add to XML document node
  echo '<marker ';
  echo 'id="' . $ind . '" ';
  echo 'name="' . parseToXML($row['name']) . '" ';
  echo 'address="' . parseToXML($row['address']) . '" ';
  echo 'lat="' . $row['lat'] . '" ';
  echo 'lng="' . $row['lng'] . '" ';
  echo 'type="' . $row['type'] . '" ';
  echo '/>';
}

// End XML file
echo "</marker>";
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top