显示没有标签的xml文档?

时间:2010-12-16 00:44:44

标签: php xml xsd

我有一个名为data_out.xml的文件,其中包含以下xml代码:

<?xml version="1.0" ?> 
    - <allproperty>
    - <aproperty>
      <postcode>ha15rs</postcode> 
      <price>250</price> 
      <imagefilename>home2.gif</imagefilename> 
      <visits>2</visits> 
      </aproperty>
    - <aproperty>
      <postcode>ha36gs</postcode> 
      <price>150</price> 
      <imagefilename>home3.gif</imagefilename> 
      <visits>1</visits> 
      </aproperty>
    - <aproperty>
      <postcode>ha27se</postcode> 
      <price>300</price> 
      <imagefilename>home4.gif</imagefilename> 
      <visits>4</visits> 
      </aproperty>
    - <aproperty>
      <postcode>ha4678</postcode> 
      <price>200</price> 
      <imagefilename>home5.gif</imagefilename> 
      <visits>5</visits> 
      </aproperty>
      </allproperty>

我想写一个PHP脚本,输出没有标签的数据,我不担心格式化,只是输出,欢呼谢谢 附:即时通讯使用simplexml

编辑:

这是错误的还是正确的:

<?php

$fp = fopen('data_out.xml', 'r'); 
echo preg_replace('/<[^>]+>/', '', $fp);

?> 

3 个答案:

答案 0 :(得分:4)

实际上内置PHP function for stripping tags名为... strip_tags()

echo strip_tags($xml_string);

无需记住正则表达式!

编辑:仅供后人使用,这是您的示例XML http://ideone.com/hQS4P

的输出

答案 1 :(得分:2)

这对于你现在正在尝试做的事情来说是一个巨大的过度杀伤,但是如果你想要在以后更好地格式化你的数据,你可能想要考虑XSLT。这就产生了你现在正在寻找的东西:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>

    <xsl:template match="text()">
        <xsl:variable name="clean" select="normalize-space(.)"/>
        <xsl:if test="string-length($clean) > 0">
            <xsl:value-of select="$clean"/><xsl:text>&#10;</xsl:text>
        </xsl:if>
    </xsl:template>

</xsl:stylesheet>

答案 2 :(得分:1)

如果您只想删除所有标记,并且如果 XML完全有效,则可以使用正则表达式。

<[^>]+>替换为''

如果XML在属性中可能包含>个字符,则无效;你需要一个更复杂的正则表达式,它能识别字符串。

编辑:例如:

echo preg_replace('/<[^>]+>/', '', $someXML);