7. 노드 생성
DOM 작업에서 추가, 삭제, 수정 작업은 상위 노드를 찾아야 합니다
1. DOMElement DOMDocument::createElement ( 문자열 $name [, 문자열 $value ] )
노드 생성 및 노드 객체 반환
string $name : 노드 이름(요소 이름)
[, string $value]: 노드의 값
2. DOMNode DOMNode::appendChild ( DOMNode $newnode )
하위 노드 추가
DOMNode $newnode: 하위 노드
3. int DOMDocument::save ( 문자열 $filename )
DOM의 데이터를 지정된 파일에 저장
4. documentElement 속성은 dom 모델의 루트 노드를 나타냅니다
<?<span>php header ( </span><span>'</span><span>Content-Type:text/html;charset=gb2312</span><span>'</span><span> ); $dom </span>= <span>new</span> DOMDocument ( <span>'</span><span>1.0</span><span>'</span>, <span>'</span><span>utf-8</span><span>'</span><span> ); $dom</span>->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> ); </span><span>//</span><span> 创建节点仅仅是表示在内存中创建出这个节点对象,但这个对象和我们之前的 </span><span>//</span><span> dom模型没有任何联系</span> $person = $dom->createElement ( <span>'</span><span>person</span><span>'</span><span> ); $name </span>= $dom->createElement ( <span>'</span><span>name</span><span>'</span>, <span>'</span><span>huangliu</span><span>'</span><span> ); $age </span>= $dom->createElement ( <span>'</span><span>age</span><span>'</span>, <span>'</span><span>18</span><span>'</span><span> ); </span><span>//</span><span> 将name和age做为子节点追加至person节点</span> $person-><span>appendChild ( $name ); $person</span>-><span>appendChild ( $age ); </span><span>//</span><span> $dom->getElementsByTagName('persons')->item(0)->appendChild($newnode) </span><span>//</span><span> 将person做了子节点追加至根节点</span> $dom->documentElement-><span>appendChild ( $person ); </span><span>//</span><span> 将dom中的所有数据重新保存到demo01.xml文件中</span> $dom->save ( <span>'</span><span>demo01.xml</span><span>'</span> );
결과:
<person> <name>huangliu</name> <age><span>18</span></age> </person>
8. 노드 삭제
DOMNode DOMNode::removeChild ( DOMNode $oldnode )
DOMNode $oldnode: 삭제할 노드 객체
예: 다음 파란색 부분 삭제
<?<span>php header ( </span><span>'</span><span>Content-Type:text/html;charset=gb2312</span><span>'</span><span> ); $dom </span>= <span>new</span> DOMDocument ( <span>'</span><span>1.0</span><span>'</span>, <span>'</span><span>utf-8</span><span>'</span><span> ); $dom</span>->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> ); </span><span>//</span><span> 首先找到要删除的节点对象</span> $person = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>1</span><span> ); </span><span>//</span><span> 将节点删除</span> $dom->documentElement-><span>removeChild ( $person ); </span><span>//</span><span> 重新保存文件</span> $dom->save ( <span>'</span><span>demo01.xml</span><span>'</span> );
9. 노드 수정
DOMNode DOMNode::replaceChild ( DOMNode $newnode , DOMNode $oldnode )
DOMNode $newnode: 새 노드
DOMNode $oldnode: 원본 노드
<?<span>php header ( </span><span>'</span><span>Content-Type:text/html;charset=gb2312</span><span>'</span><span> ); $dom </span>= <span>new</span> DOMDocument ( <span>'</span><span>1.0</span><span>'</span>, <span>'</span><span>utf-8</span><span>'</span><span> ); $dom</span>->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> ); </span><span>//</span><span> 找到要被替换掉的节点</span> $oldNode = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>2</span><span> ); </span><span>//</span><span> 创建出新的节点</span> $person = $dom->createElement ( <span>'</span><span>person</span><span>'</span><span> ); $name </span>= $dom->createElement ( <span>'</span><span>name</span><span>'</span>, <span>'</span><span>songjiang</span><span>'</span><span> ); $age </span>= $dom->createElement ( <span>'</span><span>age</span><span>'</span>, <span>100</span><span> ); $person</span>-><span>appendChild ( $name ); $person</span>-><span>appendChild ( $age ); </span><span>//</span><span> 用新节点替换原节点</span> $dom->documentElement-><span>replaceChild ( $person, $oldNode ); </span><span>//</span><span> 保存文件</span> $dom->save ( <span>'</span><span>demo01.xml</span><span>'</span> );
10. 저장
? 문자열 DOMDocument::saveXML
DOM의 데이터를 문자열 변수에 저장
? int DOMDocument::save( 문자열 $filename )
DOM의 데이터를 지정된 파일에 저장
11. 속성 추가, 삭제, 수정에 관하여
1. DOMAttr DOMElement::setAttribute( 문자열 $name , 문자열 $value )
속성 추가
문자열 $name: 속성 이름
문자열 $value: 속성 값
person에 id='s102' 속성을 추가하세요
<?<span>php header ( </span><span>'</span><span>Content-Type:text/html;charset=gb2312</span><span>'</span><span> ); $dom </span>= <span>new</span> DOMDocument ( <span>'</span><span>1.0</span><span>'</span>, <span>'</span><span>utf-8</span><span>'</span><span> ); $dom</span>->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> ); </span><span>//</span><span> 为第二个人添加id属性 </span><span>//</span><span> 找到第二个人</span> $person = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>1</span><span> ); </span><span>//</span><span> 添加id属性</span> $person->setAttribute ( <span>'</span><span>id</span><span>'</span>, <span>'</span><span>s102</span><span>'</span><span> ); </span><span>//</span><span> 保存文件</span> $dom->save ( <span>'</span><span>demo01.xml</span><span>'</span> );
2. DOMAttr DOMElement::setAttribute( 문자열 $name , 문자열 $value )
속성 수정
문자열 $name: 속성 이름
문자열 $value: 속성 값
노드에 이 속성이 없으면 속성을 추가한다는 의미입니다(위와 차이점에 유의하세요)
노드에 이미 이 속성이 있는 경우 속성을 수정한다는 의미입니다.
3. bool DOMElement::removeAttribute ( 문자열 $name )
속성 삭제(노드 삭제 아님)
$name: 삭제할 속성
<?<span>php header ( </span><span>'</span><span>Content-Type:text/html;charset=gb2312</span><span>'</span><span> ); $dom </span>= <span>new</span> DOMDocument ( <span>'</span><span>1.0</span><span>'</span>, <span>'</span><span>utf-8</span><span>'</span><span> ); $dom</span>->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> ); </span><span>//</span><span> 删除第2个人的id属性 </span><span>//</span><span> 找到第二个人</span> $person = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>1</span><span> ); </span><span>//</span><span> 删除id属性</span> $person->removeAttribute(<span>'</span><span>id</span><span>'</span><span>); </span><span>//</span><span> 保存文件</span> $dom->save ( <span>'</span><span>demo01.xml</span><span>'</span> );
4. 속성 가져오기
문자열 DOMElement::getAttribute ( 문자열 $name )
문자열 $name: 속성 이름
<?<span>php header ( </span><span>'</span><span>Content-Type:text/html;charset=gb2312</span><span>'</span><span> ); $dom </span>= <span>new</span> DOMDocument ( <span>'</span><span>1.0</span><span>'</span>, <span>'</span><span>utf-8</span><span>'</span><span> ); $dom</span>->load ( <span>'</span><span>demo01.xml</span><span>'</span><span> ); </span><span>//</span><span> 查询第1个人的id属性 </span><span>//</span><span> 找到第1个人</span> $person = $dom->getElementsByTagName ( <span>'</span><span>person</span><span>'</span> )->item ( <span>0</span><span> ); </span><span>//</span><span> 查询id属性</span> echo $person->getAttribute(<span>'</span><span>id</span><span>'</span>);
12개의 SimpleXML
PHP DOM: 추가, 삭제 및 수정
SimpleXML: 쿼리
1. XML 읽기
1. simpleXMLElement simplexml_load_file(문자열 $filename)
xml 파일에서 데이터 읽기
문자열 $filename:xml 파일 이름
2. SimpleXMLElement::__construct(문자열 데이터)
문자열에서 데이터 읽기
문자열 데이터: xml 형식의 문자열
데이터가 파일로 저장되어 있는 경우에는 simplexml_load_file을 이용하여 읽어주세요
데이터가 문자열로 저장된 경우 SimpleXMLElement 클래스의 생성자를 사용하여 읽습니다.
위 내용은 PHP의 XML DOM(11)을 관련 내용을 포함하여 소개한 내용으로, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.