'simplexml'phpからmysqlデータベースへのループは最初の要素のみを返します

DonQuery

これに関するいくつかの助けに感謝してください。データベースに挿入する80を超えるアイテムを含む非常に長いxmlフォームがあります。

私はこれを調査しましたが、何らかの理由でforeachループが機能しません。

私が何をしようとしているのかを理解するために、ここの挿入部分を減らしました。

最初の 'プロパティ/アイテムをデータベースに挿入できるので、挿入などに問題はありません。

何らかの理由で、ループはデータベース内の他の79項目を表示しません。

$affectedRow = 0;

$xml =  simplexml_load_file('properties2.xml') or die("can not find it");

foreach($xml->children()  as $row) {    
    $reference = $row->branch->properties->property['reference'];
    $instructedDate = $row->branch->properties->property->instructedDate;
    $price_text = $row->branch->properties->property->price_text;

    $sql = "INSERT INTO test( reference, instructedDate, price_text) VALUES ('". $reference ."','". $instructedDate ."','". $price_text ."')";

    $result = mysqli_query($conn, $sql);

    if (! empty($result )) {
        $affectedRow ++;
    } else {
        $error_message = mysqli_error($conn) . "\n";
    }
}
?>

例:xmlファイル

-<agency branchName="billies Estate Agents " name="billie ea" xsi:noNamespaceSchemaLocation="http://www.feedcompany.co.uk/xmlexport/feedcompanyXMLSchema.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

    -<branches>

        -<branch name="billies Estate Agents ">

            -<properties>

                -<property reference="00000477">

                    <instructedDate>26/02/2018 15:11:56</instructedDate>

                    <price_text>Offers in Excess of £200,000</price_text>

                 </property

               -<property reference="00000478">

                    <instructedDate>26/02/2018 15:11:56</instructedDate>

                    <price_text>Offers in Excess of £200,000</price_text>

                </property>
dWinder

$xml->children()期待したものではないため、最初の要素のみをDBに取得します。

XML<agency><branches>タグ始まり、タグがあることに注意してください完全なXMLは次のようなものだと思います。

<agency>
    <branches>
        <branch>
            <properties>
                <property>
                    ...
                </property>
                <property>
                    ...
                </property>
            </properties>
        </branch> 
    </branches>
</agency>

すべてのプロパティを取得する->なので、を使用する必要があります$xml->branches->branch->properties->children()

何かのようなもの:

foreach($xml->branches->branch->properties->children() as $property) {
    $sql = "INSERT INTO test( reference, instructedDate, price_text) VALUES ('". $property['reference']."','". $property->instructedDate ."','". $property->price_text."')";
 ...
 } 

$xml->children()3行目のように実行すると、branchsタグが配列内の唯一の要素として取得されます。そのため、DBに挿入される要素は1つだけです。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

next()要素SimpleXML

分類Dev

PHP 7 simpleXML

分類Dev

SimpleXML writing in PHP

分類Dev

SimpleXMLとPHP

分類Dev

PHP-SimpleXML foreach

分類Dev

PHP SimpleXML ForEach

分類Dev

SimpleXML同じ要素名のデータを解析します

分類Dev

simplexmlのネスト

分類Dev

[PHP] [XML] SimpleXML children()は1つの子のみを返します

分類Dev

ループするsimplexml属性

分類Dev

--xmlタグsimplexmlで

分類Dev

XMLファイルから特定のデータを取得するためのSimpleXML

分類Dev

SimpleXMLディープ構造の作成

分類Dev

PHP SimpleXMLは、親の任意のレベルで特定の子ノードを検索します

分類Dev

SimpleXMLから配列へ

分類Dev

SimpleXmlとphpの反復

分類Dev

子のSimplexml子の解析

分類Dev

SimpleXML-SimpleXML型の変数を子要素に割り当てますか?

分類Dev

SimpleXML要素の生の値を取得する

分類Dev

simplexmlを使用したSOAP

分類Dev

SimpleXMLを使用した配列を使用してPHPのXMLファイルから特定のデータのみを表示するにはどうすればよいですか?

分類Dev

How to handle & and other special character in SimpleXML PHP

分類Dev

PHP SimpleXML doesn't output anything

分類Dev

simplexmlは<a>タグクラスをロードしませんか?

分類Dev

PHP:simplexml_load_fileは、UTF-8エンコーディングのXMLファイルから奇妙な文字を取得します

分類Dev

SimpleXmlを使用してxmlファイルからデータを抽出する

分類Dev

SimpleXML属性へのアクセス

分類Dev

simplexml_load_stringは空白の配列を返します

分類Dev

simplexml_load_stringは空の結果を返します

Related 関連記事

ホットタグ

アーカイブ