>  기사  >  백엔드 개발  >  XML 문서를 운영하는 PHP DOMElement의 예

XML 문서를 운영하는 PHP DOMElement의 예

WBOY
WBOY원래의
2016-07-25 09:00:04867검색
  1. /*

  2. <수업>
  3. <학생번호="101">
  4. <이름 >손오공
  5. Sun Xingzhe
  6. 123
  7. <소개>< [CDATA[&*$%! 특수 문자열^&#$&]]>
  8. <학생 번호 "10">

  9. */

  10. 코드 복사

2.php 코드

  1. /**

  2. *DOME요소 XML
  3. *http://bbs.it-home.org
  4. */
  5. $xmldoc = new DOMDocument(' 1.0', 'UTF-8');
  6. $xmldoc->load('datas.xml');

  7. $itemsNodeList = $xmldoc->getElementsbyTagName(' Students');

  8. $itemElement = $itemsNodeList->item(0);//첫 번째 완전한 학생 정보 노드 가져오기
  9. $itemChildsNodeList = $itemElement->getElementsbyTagName('name');/ /Get 하위 노드의 "이름"에는 이름이 여러 개 있을 수 있습니다
  10. $itemChildNode = $itemChildsNodeList->item(0);//첫 번째 이름 노드 가져오기
  11. echo $itemChildNode->nodeValue;// 출력 노드 값

  12. //함수로 캡슐화됨

  13. $nodeArr = array('name', 'age', 'introduction')
  14. function getNodeVal($xmldoc, $itemsName, $nodeArr){
  15. $items = $xmldoc->getElementsByTagName($itemsName);
  16. for($i=0; $i < $items->length; $i ){
  17. $item = $items->item($i);
  18. foreach($nodeArr as $node){
  19. $data[$i][] = $item->getElementsByTagName($node) ->item(0)->nodeValue;
  20. }
  21. }
  22. return $data;
  23. }

  24. $data = getNodeVal($xmldoc , 'Student', $nodeArr);

  25. print_r($data);

  26. //노드 추가

  27. $xmldoc = new DOMDocument('1.0', 'UTF- 8');
  28. $xmldoc->load('datas.xml');
  29. $items = $xmldoc->getElementsByTagName('class')->item(0);//루트 노드
  30. $student = $xmldoc->createElement('student');//새 학생 노드 생성
  31. $stu_name = $xmldoc->createElement('name','Zhang San');
  32. $stu_age = $xmldoc->createElement('age','15');
  33. $stu_intro = $xmldoc->createElement('introduction','강력한 실무 능력과 안정적인 성능');
  34. $items->appendChild($student);
  35. $student->appendChild($stu_name);
  36. $student->appendChild($stu_age);
  37. $student->appendChild ( $stu_intro);
  38. $bytes = $xmldoc->save('datas.xml')
  39. echo ($bytes)? "작성: $bytes 바이트": '저장 실패';< ;/ p>
  40. //노드 삭제

  41. $xmldoc = new DOMDocument('1.0', 'UTF-8');
  42. $xmldoc->load('datas.xml' );
  43. $student = $xmldoc->getElementsByTagName('Student')->item(2);//삭제할 노드 직접 찾기
  44. $student->parentNode->removeChild($student );//상위 노드 삭제 방법
  45. $xmldoc->save('datas.xml');

  46. //노드 값 수정

  47. $student = $ xmldoc->getElementsByTagName('student')->item(2);
  48. $student->getElementsByTagName('age')->item(0)->nodeValue = 10;
  49. $ Student->setAttribute('id', '110');
  50. $xmldoc->save('datas.xml');

  51. //Xpath 검색 노드 적용< ;/p>

  52. $xml = new DOMDocument('1.0', 'UTF-8');

  53. $xml->load('dat.xml');
  54. $xpath = new DOMXPath($xml);
  55. $nodeList = $xpath->query('/aaa/bbb/ddd/fff');
  56. echo $nodeList->item(0)-> ;nodeValue ;

  57. //SimpleXML 클래스 연산 xml

  58. /*
  59. < ;books>
  60. 1001
  61. 200위안
  62. <작가> Da Ming
  63. Tian Long Ba Bu
  64. < ;1002
  65. <가격>321위안
  66. 장산
  67. Swordsman
  68. 1004
  69. 182위안
  70. 이思
  71. 리더
  72. */
  73. $ xml = simplexml_load_file('books. xml');
  74. $books = $xml->book;
  75. echo $books[1]->title . $books[1]['house'];/ /두 번째 책을 직접 가리킵니다.
  76. foreach($xml as $item){
  77. echo $item->title,' ',$item['house'],'
    '
  78. }
  79. ?>

코드 복사


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.