为什么XMLReader会停止读取此XML文件?

时间:2016-01-28 09:31:13

标签: php xmlreader

我正在阅读这个XML文件

<?xml version="1.0" encoding="UTF-8"?>
<articlelist xml:lang="DE">
<articlegroup id="BDB">
<oldarticle>No</oldarticle>
<article ArticleNr="103154" ArtikelGruppenNr="BDB" ArtikelGruppenName="Instant-Kameras" SetArtikel="0">
<name>Fujifilm Instax Mini Hello Kitty Set</name>
<brand id="FUJ">Fujifilm</brand>
<tecdat>
<group name="Ausstattung">
<proberty name="Eingebautes Blitzgerät">Ja</proberty>
</group>
</tecdat>
<tecdat>
<group name="Stromversorgung">
<proberty name="Stromversorgung">2x Mignon (AA)</proberty>
</group>
</tecdat>
<tecdat>
<group name="Allgemein">
<proberty name="Farbe">rosa</proberty>
<proberty name="Breite (mm)">169</proberty>
<proberty name="Höhe (mm)">145</proberty>
<proberty name="Tiefe (mm)">69</proberty>
<proberty name="Gewicht (g)">395</proberty>
</group>
</tecdat>
<description><p><strong>Fujifilm Instax Mini Hello Kitty Set</strong></p>

<p><strong>Set inklusive Film, Sticker und Schl&uuml;sselband</strong></p>

<p>Hello Kitty ist eine tolle Begleiterin!&nbsp;Junge M&auml;dchen m&ouml;gen ihren Style und finden sie&nbsp;total niedlich. Mit ihren zahlreichen Extras im Hello Kitty Design ist sie die richtige Softbildkamera f&uuml;r tolle Schnappsch&uuml;sse.</p>

<p><strong>Blitz zur optimalen Ausleuchtung</strong><br />
Da erscheint alles im besten Licht! Der Blitz der instax mini Hello Kitty sorgt f&uuml;r die optimale Bildausleuchtung.</p>

<p><strong>Manuelle Belichtungseinstellung</strong><br />
Mit der manuellen Belichtungseinstellung l&auml;sst sich die instax mini Hello Kitty spielend f&uuml;r alle Lichtverh&auml;ltnisse einstellen.</p>

<p><strong>High-Key Aufnahmefunktion</strong><br />
Besonders kreative Aufnahmen gelingen mit der High-Key-Aufnahmefunktion. Sie beeindrucken mit besonders hellem und weichem Hintergrund.</p>

<p><strong>Fujinon-Objektiv</strong><br />
Das Fujinon-Objektiv erm&ouml;glicht besonders detailreiche Aufnahmen von&nbsp;Lieblingsmotiven.</p>

<p><strong>Bildz&auml;hlwerk</strong><br />
Das eingebaute Bildz&auml;hlwerk zeigt&nbsp;jederzeit pr&auml;zise an, wie viele Aufnahmen noch gemacht werden k&ouml;nnen bevor ein neuer Film her muss.</p>

<p><strong>ACHTUNG!<br />
F&uuml;r Kinder unter 3 Jahren nicht geeignet. Erstickungsgefahr wegen verschluckbarer Kleinteile.</strong></p>

<p>&nbsp;</p>
</description>
</article>
</articlegroup>
</articlelist>

这是我的代码:

$reader = new XMLReader();
$reader->open($extractedTechnicalFile);

while($reader->read()) {
   $nodeName = $reader->name;
   if($nodeName == 'brand') { // ok, it goes here }
   if($nodeName == 'description') { // never goes here }        
}

我可以阅读articlebrandname节点,但它从不读取description节点。

我确信我错过了文件中的内容,但是什么?我的英文文件也是如此,它使用完全相同的代码,所以它可能与语言有关。

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

您应该使用您的html内容。由于html内容,xml解析器无法正确解析xml。请试试下面的xml;

<?xml version="1.0" encoding="UTF-8"?>
<articlelist xml:lang="DE">
    <articlegroup id="BDB">
        <oldarticle>No</oldarticle>
        <article ArticleNr="103154" ArtikelGruppenNr="BDB" ArtikelGruppenName="Instant-Kameras" SetArtikel="0">
            <name>Fujifilm Instax Mini Hello Kitty Set</name>
            <brand id="FUJ">Fujifilm</brand>
            <tecdat>
                <group name="Ausstattung">
                    <proberty name="Eingebautes Blitzgerät">Ja</proberty>
                </group>
            </tecdat>
            <tecdat>
                <group name="Stromversorgung">
                    <proberty name="Stromversorgung">2x Mignon (AA)</proberty>
                </group>
            </tecdat>
            <tecdat>
                <group name="Allgemein">
                    <proberty name="Farbe">rosa</proberty>
                    <proberty name="Breite (mm)">169</proberty>
                    <proberty name="Höhe (mm)">145</proberty>
                    <proberty name="Tiefe (mm)">69</proberty>
                    <proberty name="Gewicht (g)">395</proberty>
                </group>
            </tecdat>
            <description>
                <![CDATA[
                <p>
                    <strong>Fujifilm Instax Mini Hello Kitty Set</strong>
                </p><p>
                    <strong>Set inklusive Film, Sticker und Schl&uuml;sselband</strong>
                </p><p>Hello Kitty ist eine tolle Begleiterin!&nbsp;Junge M&auml;dchen m&ouml;gen ihren Style und finden sie&nbsp;total niedlich. Mit ihren zahlreichen Extras im Hello Kitty Design ist sie die richtige Softbildkamera f&uuml;r tolle Schnappsch&uuml;sse.</p><p>
                    <strong>Blitz zur optimalen Ausleuchtung</strong>
                    <br />Da erscheint alles im besten Licht! Der Blitz der instax mini Hello Kitty sorgt f&uuml;r die optimale Bildausleuchtung.</p><p>
                    <strong>Manuelle Belichtungseinstellung</strong>
                    <br />Mit der manuellen Belichtungseinstellung l&auml;sst sich die instax mini Hello Kitty spielend f&uuml;r alle Lichtverh&auml;ltnisse einstellen.</p><p>
                    <strong>High-Key Aufnahmefunktion</strong>
                    <br />Besonders kreative Aufnahmen gelingen mit der High-Key-Aufnahmefunktion. Sie beeindrucken mit besonders hellem und weichem Hintergrund.</p><p>
                    <strong>Fujinon-Objektiv</strong>
                    <br />Das Fujinon-Objektiv erm&ouml;glicht besonders detailreiche Aufnahmen von&nbsp;Lieblingsmotiven.</p><p>
                    <strong>Bildz&auml;hlwerk</strong>
                    <br />Das eingebaute Bildz&auml;hlwerk zeigt&nbsp;jederzeit pr&auml;zise an, wie viele Aufnahmen noch gemacht werden k&ouml;nnen bevor ein neuer Film her muss.</p><p>
                    <strong>ACHTUNG!<br />F&uuml;r Kinder unter 3 Jahren nicht geeignet. Erstickungsgefahr wegen verschluckbarer Kleinteile.</strong>
                </p><p>&nbsp;</p>
                ]]>
            </description>
        </article>
    </articlegroup>
</articlelist>