2010-07-29 5 views
0

이라는 PHP dom을 사용하여 xml에 여러 데이터를 삽입하면 the code over here을 시도하여 xml에 데이터를 삽입 할 수 있습니다. 하지만 XML에 여러 데이터를 삽입하고 싶습니다. 그걸 어떻게 성취 할 수 있니? 예를 들어xml에 새로운 사람이기 때문에

<root> 
<no>1</no> 
<activity>swimming</activity> 
<date>29/7/2010</date> 
<others> 
    <data1>data1</data1> 
    <data2>data2</data2> 
    <data3>data3</data3> 
    so on.. 
</others> 
<no>2</no> 
<activity>sleeping</activity> 
<date>29/7/2010</date> 
<others> 
    <data1>data1</data1> 
    <data2>data2</data2> 
    <data3>data3</data3> 
    so on.. 
</others> 
</root> 

의 index.php :

<?php 

error_reporting(E_ALL); 
ini_set("display_errors", 1); 

    $xmldoc = new DOMDocument(); 
    $xmldoc->load('sample.xml', LIBXML_NOBLANKS); 

    $activities = $xmldoc->firstChild->firstChild; 
    if($activities != null){ 
      while($activities != null){ 
          ?> 
      <div id="xml"> 
       <span> 
       <?php echo $activities->textContent ?> </span> <br /> 

      </div> 
         <?php 
         $activities = $activities->nextSibling; 
      } 
     } 
?> 

<body> 
<form name="input" action="insert.php" method="post"> 
    Insert Activity: 
    <input type="text" name="activity" /> 
    <input type="submit" value="Send" /> 
</form> 
</body> 
</html> 

insert.php :

<?php 
    header("Location: index.php"); 

    $xmldoc = new DOMDocument(); 
    $xmldoc->load('sample.xml'); 
    $newAct = $_POST['activity']; 

    $root = $xmldoc->firstChild; 
    $newElement = $xmldoc->createElement('activity'); 
    $root->appendChild($newElement); 
    $newText = $xmldoc->createTextNode($newAct); 
    $newElement->appendChild($newText); 
    $xmldoc->save('sample.xml'); 

?> 

상기 코드는 하나의 노드를 삽입한다. 여러 개의 노드와 자식 노드를 삽입하는 방법을 알고 싶습니다

+0

귀하의 질문은 무엇입니까? 또는 어떤 문제가 있습니까? 더 자세한 설명을 추가하십시오. – Gordon

+0

위의 코드는 하나의 노드 만 삽입합니다. 여러 노드와 자식 노드를 삽입하는 방법을 알고 싶습니다. – input

답변

2

"한 번에 여러 노드를 삽입하는 방법"을이라고하면 대답은 다음과 같습니다.

DOM 접근법은 항상 동일합니다. 노드를 만들고 어딘가에 추가하십시오. 하나씩.

위의 예에서 TextNode 생성을 생략하고 두 번째 인수로 문자열 내용을 createNode에 추가 할 수 있습니다. 자동 이스케이프와 엔티티 인코딩은 사용하지 않습니다.

대량 생성 방법DOMDocumentFragment::appendXML입니다. 이것은 임의의 XML 문자열을 입력으로 사용합니다. 이것은 비표준입니다.