我正在使用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。
答案 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。