отображать XML-документ без тегов? - PullRequest
2 голосов
/ 16 декабря 2010

У меня есть файл с именем 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

EDIT:

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

<?php

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

?> 

Ответы [ 3 ]

4 голосов
/ 16 декабря 2010

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

echo strip_tags($xml_string);

Не нужно помнить регулярное выражение!

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

2 голосов
/ 16 декабря 2010

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

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

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

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

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

echo preg_replace('/<[^>]+>/', '', $someXML);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...