如何从PHP输出XML字符串

时间:2011-04-19 13:42:00

标签: php xml

我正在使用XML字符串并在PHP中进行编辑,以便在访问PHP文件时最终输出已编辑的XML字符串。我一直在尝试使用echo和print来输出XML文档,但它只在最里面的标签中打印数据。我想让它像直接加载XML文档一样运行,例如test.com/example.xml。相反,它只打印出部分字符串而不是整个字符串。打印声明如下。有什么建议吗?

打印 <kml xmlns="http://www.opengis.net/kml/2.2" xmlns:gx="http://www.google.com/kml/ext/2.2" xmlns:kml="http://www.opengis.net/kml/2.2" xmlns:atom="http://www.w3.org/2005/Atom">

<Document> <Style id="undecorated_style">         <BalloonStyle>             <displayMode>undecorated</displayMode>         </BalloonStyle>     </Style>

<Placemark>
    <name>Relative Marker Example</name>
    <description><![CDATA[
    <div style="position: absolute; width: 100px; height: 100px; left: -50px; top: -50px"><img width="100px" height="100px" src="http://argonapps.gatech.edu/examples/FrameMarkerThin_005.png"/></div>
    ]]>
    </description>
    <balloonVisibility>1</balloonVisibility>
    <Marker>
        <markerType>framesimpleid</markerType>
        <markerId>-1</markerId> <!-- integer value (-1 means follow any marker of markerType) -->
        <locationMode>relative</locationMode> <!-- default (ignore), relative (update location), fixed (update camera) -->
        <orientationMode>fixed</orientationMode>
        <scale>
            <x>0.076</x> <!-- test marker is 0.038 meters -->
            <y>0.076</y>
            <z>0.076</z>
        </scale>
    </Marker>
    <styleUrl>#undecorated_style</styleUrl>
</Placemark>

“;

仅在浏览器中打开文件:

相对标记示例]]&gt; 1帧impleid -1相对固定0.076 0.076 0.076 #undecorated_style

而不仅仅是xml。

3 个答案:

答案 0 :(得分:5)

在打印之前,请添加内容类型标题。

无论

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

或更适合KML

header('Content-type: application/vnd.google-earth.kml+xml');

如果您想在浏览器中查看它,请阅读:http://www.w3schools.com/xml/xml_view.asp

您还可以通过添加

强制它显示为文本
 header('Content-type: text/plain');

答案 1 :(得分:1)

这可能是因为您的浏览器正在尝试呈现XML(类似于它加载HTML的方式,您只看到内容而不是标记)。

如果您在浏览器中执行“查看源代码”,则应该看到原始XML。

您可以随时将标记更改为&amp; lt;和&amp; gt;所以它将其显示为文本

print htmlentities('<Placemark>.....</Placemark>');

答案 2 :(得分:0)

echo输出之前,您应首先发送正确的XML数据标题:

header("Content-type: text/xml");
// Or
header("Content-type: application/xml");

编辑:请注意,您的浏览器可能仍会仅渲染内部文本。查看页面源以查看XML。