2013-04-22 1 views
0

content_set의 특정 노드에 XML 문서에 데이터를 삽입하려고합니다. item()을 사용해야한다고 생각했지만 양식을 제출할 때마다 데이터가 입력됩니다. 내 문서의 끝이 아니라 마감 전에 content_sets항목()을 사용하여 XML 문서에 데이터 삽입

PHP :

// 내가 영 존재로, 나는 데이터가 내 HTML에서 선택의 값을 기준으로 넣어 노드 선택할 것이라고 생각하는 곳이다 doc_types 및 1은 video_types입니다.

$file_type = $_POST['file_type']; 
$doc = new DOMDocument(); 
$doc->load('myfile_files.xml'); 

$doc->formatOutput = true; 
$r = $doc->getElementsByTagname('content_sets')->item($file_type); 

$b = $doc->createElement("article"); 

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

$b->appendChild($titleName); 


$r->appendChild($b); 

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

XML :

<?xml version="1.0" encoding="UTF-8"?> 
<content_sets> 
    <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> 
</content_sets> 

HTML은 :

<p>Content Type:<br/> 
<select name="file_type"> 
    <option value="0">Document</option> 
    <option value="1">Video</option> 
    <option value="2">Image</option> 
</select></p> 

나는 스크립트의 가장 중요한 대화 부분을 포함 thried하지만, 필요한 경우 모든 게시 할 수 있습니다.

감사합니다.

+0

자세한 내용은 다음과 같습니다. (1) ''은 변경 될 것입니까? (2) 어느 요소를 삽입 하시겠습니까? – michi

답변

1

1)를 사용하여 XPath는 당신이)

이 변경 노드를 갖게되면, 단순히에 새 값을 할당 할 노드를 찾을 수 있습니다.

3) 자세한 내용은 다음 링크를

체크 아웃 할 때 파일을 쓰기 :

+0

정보를 제공해 주셔서 감사합니다. 내 XML의 나머지 부분을 표시하고 저장하기 위해 PHP를 편집했습니다. 난 왜 내 원래 스크립트를 사용하여 getElementsByTagname content_sets 모든 노드를 찾은 다음 항목 (0) 삽입 첫 번째 찾을 찾을 작동하지 않는 경우 궁금합니다? 다시 한 번 감사드립니다! – Denoteone

+0

Q : getElementsByTagname()이 작동하지 않는 이유는 무엇입니까? A : 가능한 많은 이유가 있습니다. 디버깅하려면 복잡한 식을 하위 식으로 나누고 오류를 찾을 때까지 각 하위 식의 값을 "printf"합니다. 예를 들어'echo $ file_type
','print_r ($ doc-> getElementsByTagname ('content_sets'))
'등등. Eclipse 용 PHP와 같은 IDE를 얻거나 [XDebug] (http : //www.xdebug.org/docs/all). – paulsm4

관련 문제