4

すべてのタグを取り除き、ノード値のみを残したい大きな XML ファイルがあります。各ノード値を別々の行に入れたい。どうやってやるの?

フリーソフトウェアを使用してそれを行うか、PHP または ASP.NET コードを使用できますか? XSLT オプションも調べました。おそらくRegEXには多すぎます。、を参照して PHP オプションを調べましたsimplexml_load_file()strip_tags()get_file_contents()失敗しました。

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- a comment -->
<catalog>
    <cd>
        <title>Empire Burlesque</title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia</company>
        <price>10.90</price>
                <address>
                         <city>Melbourne </city>
                         <zip>01803 </zip>
                </address>
        <year>1985</year>
    </cd>
    <cd>
        <title>Hide your heart</title>
        <artist>Bonnie Tyler</artist>
        <country>UK</country>
        <company>CBS Records</company>
        <price>9.90</price>
        <year>1988</year>
    </cd>

</catalog>

編集:これは私が試したことです。

<?php

$xml = simplexml_load_file('myxml.xml');
echo strip_tags($xml);

?>
4

2 に答える 2

5

これはあなたをする必要があります:

<?php
$xml = file_get_contents('myxml.xml');
$xml = nl2br($xml);
echo strip_tags($xml,"<br>");
?>

改行が欠落している理由は、XML では平文の改行として格納されるの\nに対し、HTML として表示する場合は明示的な<br>改行が必要であるためです。このため、優れた PHP の人々は、nl2br()これを行うために呼び出される便利な関数を作成しました。

于 2012-05-15T20:18:37.757 に答える
4

短くてシンプルな XSLT ソリューションを次に示します

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

 <xsl:template match="text()">
  <br /><xsl:value-of select="concat(.,'&#xA;')"/>
 </xsl:template>
</xsl:stylesheet>

この変換が提供された XML ドキュメントに適用された場合(任意のXML ドキュメントで機能します):

<catalog>
    <cd>
        <title>Empire Burlesque</title>
        <artist>Bob Dylan</artist>
        <country>USA</country>
        <company>Columbia</company>
        <price>10.90</price>
        <address>
            <city>Melbourne </city>
            <zip>01803 </zip>
        </address>
        <year>1985</year>
    </cd>
    <cd>
        <title>Hide your heart</title>
        <artist>Bonnie Tyler</artist>
        <country>UK</country>
        <company>CBS Records</company>
        <price>9.90</price>
        <year>1988</year>
    </cd>
</catalog>

必要な結果が生成されます。

<br/>Empire Burlesque
<br/>Bob Dylan
<br/>USA
<br/>Columbia
<br/>10.90
<br/>Melbourne 
<br/>01803 
<br/>1985
<br/>Hide your heart
<br/>Bonnie Tyler
<br/>UK
<br/>CBS Records
<br/>9.90
<br/>1988

ブラウザでは次のように表示されます。


エンパイア・バーレスク
ボブ・ディラン
USA
コロンビア
10.90
メルボルン
01803
1985
Hide your heart
ボニー・タイラー
UK
CBS Records
9.90
1988

于 2012-05-16T03:01:36.487 に答える