0

ユーザーが送信したフォームの $_POST 変数に基づいて、正しい XML ノードを特定する方法を教えてください。以下は、新しい XML データを配置することと、フォーム データを取得してそれを XML ドキュメントに挿入する準備をする PHP についてのメモを含む現在の XML です。

XML:

<?xml version="1.0" encoding="UTF-8"?>
    <content_sets>


<!-- The new article node will be placed inside of one of the content_sets child nodes. Either doc_types, video_types, image_types. -->
    <doc_types>

        <article>
            <doc_name>Test Proposal</doc_name>
            <file_name>tes_prop.docx</file_name>
            <doc_description>Test Word document. Please remove when live.</doc_description>
            <doc_tags>word document,test,rfp template,template,rfp</doc_tags>
            <last_update>01/26/2013 23:07</last_update>
        </article>
    </doc_types>



    <video_types>
        <article>
            <doc_name>Test Video</doc_name>
            <file_name>test_video.avi</file_name>
            <doc_description>Test video. Please remove when live.</doc_description>
            <doc_tags>test video,video, avi,xvid,svid avi</doc_tags>
            <last_update>01/26/2013 23:07</last_update>
        </article>
    </video_types>



    <image_types>
        <article>
            <doc_name>Test Image</doc_name>
            <file_name>logo.png</file_name>
            <doc_description>Logo transparent background. Please remove when live.</doc_description>
            <doc_tags>png,logo,logo png,no background,graphic,hi res</doc_tags>
            <last_update>01/26/2013 23:07</last_update>
        </article>
    </image_types>


</content_sets>

送信時の PHP:

$file_type = $_POST['file_type'];
//This is where the node name comes from

$doc = new DOMDocument();
$doc->load( 'rfp_files.xml' );

$doc->formatOutput = true;

$r = $doc->getElementsByTagName("content_sets")->getElementsByTagName($file_type);
*****//The above code is where my issue is coming from. I am not identifying the child node of content_sets correctly. 
$b = $doc->createElement("article");

$titleName = $doc->createElement("doc_name");
$titleName->appendChild(
    $doc->createTextNode( $Document_Array["name"] )
);
$b->appendChild( $titleName );


$r->appendChild( $b );

$doc->save("rfp_files.xml");

article'sフォームや残りの子ノードは表示しませんでした。必要に応じて、さらに多くのコードを投稿できます。

4

1 に答える 1

1

を使用する場合、ノード リスト内の特定のノードを取得できるように メソッドgetElementsByTagName()を使用する必要がありますitem()。ノード リストに項目が 1 つしかない場合でも、これを行う必要があります。

getElementsByTagName()は常に DOM ノード リストを返すため、リストをループするか、item() メソッドを介して特定のアイテムを取得する必要があります。それは理にかなっていますか? ここに例があります: http://php.net/manual/en/domnodelist.item.php

于 2013-01-28T05:09:06.223 に答える