отображать XML-документ без тегов?


У меня есть файл под названием 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-скрипт, который выводит эти данные без тегов, я не беспокоюсь о форматировании, просто вывод, спасибо , p.s. Я использую simplexml

ИЗМЕНИТЬ:

Это неправильно или правильно:

<?php

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

?> 
 2
Author: getaway, 2010-12-16

3 answers

На самом деле есть встроенная функция PHP для удаления тегов, которая называется...strip_tags().

echo strip_tags($xml_string);

Нет необходимости запоминать регулярное выражение!

РЕДАКТИРОВАТЬ: Просто для потомков, вот выходные данные для вашего образца XML http://ideone.com/hQS4P

 4
Author: Yahel, 2010-12-16 01:09:28

Это огромный перебор для того, что вы пытаетесь сделать прямо сейчас, но если вы хотите улучшить его, чтобы позже отформатировать свои данные более красиво, вы можете рассмотреть 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
Author: Dave, 2010-12-16 01:12:06

Если вы просто хотите удалить все теги, и если XML полностью действителен, вы можете использовать регулярное выражение.

Заменить <[^>]+> на ''.

Если XML может содержать символы > в атрибутах, это не сработает; вам понадобится более сложное регулярное выражение, которое знает строки.

РЕДАКТИРОВАТЬ: Например:

echo preg_replace('/<[^>]+>/', '', $someXML);
 1
Author: SLaks, 2010-12-16 00:55:09