찾다
백엔드 개발PHP 튜토리얼배열 객체에 대한 XML

XML 내용을 파싱한 후 해당 배열 객체를 반환하며, 반환 유형은 매개변수 설정[array, JSON]을 통해 설정할 수 있습니다. 기본값: 배열
simplexml_load_string을 기반으로 하기 때문에 네임스페이스가 있는 XML을 구문 분석하는 데 그다지 좋지 않고 네임스페이스 내용이 손실됩니다. 위의 테스트에서 얻은 결론은 이 문제를 해결합니다.
这个可以满足一般的使用需求
  1. function toJSON()
  2. {
  3. require_once '../classes/XmlToArray.php';
  4. $XML=
  5. li> "-//Apache Software Foundation//DTD Struts 구성 2.0//EN"
  6. "http://struts.apache.org/dtds/struts-2.0.dtd">
  7. < ;constant name="struts.objectFactory" value="spring"/>
  8. add.action
  9. /emp/add_suc.jsp
  10. /emp/list.jsp
  11. delete.action
  12. /emp/delete_suc.jsp
  13. update.action
  14. /emp/edit_suc.jsp
  15. /emp/edit.jsp
  16. XML;
  17. header("Content-type: text/html ; charset=utf-8") ;
  18. $xml_to_array = new XmlToArray();
  19. $xml_to_array->setXml($XML);
  20. // 当标签名与内置属性有冲突的时候可以自정의상关属성명, 一般其概况不需要设置
  21. //$xml_to_array->setAttributeAsName("attributeAsName")->setContentAsName("contentasName");
  22. $r = $xml_to_array->parseXml( true);
  23. print_r( $r ) ;
  24. }
  25. // 打印结果:
  26. {"struts":{"attributes":[],"content":"", "상수":{"속성":{"이름":"struts.objectFactory","값":"spring"},"content":""},"패키지":{"속성":{"이름" :"crm_employee","extends":"struts-default","namespace":"/emp"},"content":"","action":[{"attributes":{"name":"add" ,"class":"addBean","method":"add"},"content":"","result":[{"attributes":[],"content":"add.action"},{ "attributes":[],"content":"/emp/add_suc.jsp"}]},{"attributes":{"name":"list","class":"listBean","method":" list"},"content":"","result":{"attributes":[],"content":"/emp/list.jsp"}},{"attributes":{"name":"delete ","class":"deleteBean","method":"delete"},"content":"","result":{"attributes":[],"content":"/emp/delete_suc.jsp" }},{"속성":{"name":"update","class":"updateBean","method":"update"},"content":"","result":{"attributes": [],"content":"/emp/edit_suc.jsp"}},{"attributes":{"name":"edit","class":"editBean","method":"edit"}," content":"","result":{"attributes":[],"content":"/emp/edit.jsp"}}]}}}
  27. // 打印数组
  28. function toArray()
  29. {
  30. require_once '../classes/XmlToArray.php';
  31. $XML=< ;?xml version="1.0" 인코딩="UTF-8"?>
  32. li> "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
  33. "http://struts.apache.org/dtds/struts-2.0.dtd">
  34. add.action
  35. /emp/add_suc.jsp
  36. < ;result>/emp/list.jsp
  37. /emp/delete_suc.jsp
  38. update.action
  39. /emp/edit_suc.jsp
  40. /emp/edit.jsp
  41. XML;
  42. header("Content-type: text/html; charset=utf-8") ;
  43. $xml_to_array = new XmlToArray();
  44. $xml_to_array->setXml($XML);
  45. // 当标签名与内置属性有冲突的时候可以自정의상关属성명, 一般其概况不需要设置
  46. //$xml_to_array->setAttributeAsName("attributeAsName")->setContentAsName("contentasName");
  47. $r = $xml_to_array->parseXml( );
  48. print_r( $r ) ;
  49. }
  50. // 打印结果
  51. 배열
  52. (
  53. [struts] => 배열
  54. (
  55. [속성] => 배열
  56. (
  57. )
  58. [콘텐츠] =>
  59. [상수] => 배열
  60. (
  61. [속성] => 배열
  62. (
  63. [이름] => struts .objectFactory
  64. [값] => spring
  65. )
  66. [content] =>
  67. )
  68. [패키지] => 🎜> [속성] => 배열
  69. (
  70. [이름] => crm_employee
  71. [extends] => struts-default
  72. [네임스페이스] => /emp
  73. )
  74. [content] =>
  75. [action] => 배열
  76. (
  77. [0] => 배열
  78. (
  79. [속성] => 배열
  80. (
  81. [이름] => 추가
  82. [클래스] => addBean
  83. [메서드] => 추가
  84. )
  85. [내용] => ;
  86. [결과] => 배열
  87. (
  88. [0] => 배열
  89. (
  90. [속성] => 배열
  91. (
  92. )
  93. [내용] => 추가 .action
  94. )
  95. [1] => 배열
  96. (
  97. [속성] => 배열
  98. (
  99. )
  100. [내용] => /emp/add_suc.jsp
  101. )
  102. )
  103. )
  104. [1] => Array
  105. (
  106. [속성] => Array
  107. (
  108. [이름] => 목록
  109. [클래스] => listBean
  110. [메서드] => 목록
  111. )
  112. [내용] =>
  113. [결과] => 배열
  114. (
  115. [속성] => 배열
  116. (
  117. )
  118. [콘텐츠] => /emp/list.jsp
  119. )
  120. )
  121. [2] => Array
  122. (
  123. [속성] => Array
  124. (
  125. [이름] => 삭제
  126. [클래스] => deleteBean
  127. [메서드] => 삭제
  128. )
  129. [내용] =>
  130. [결과] => 배열
  131. (
  132. [속성] => 배열
  133. (
  134. )
  135. [콘텐츠] => /emp/delete_suc.jsp
  136. )
  137. )
  138. [3] => 배열
  139. (
  140. [속성] => 배열
  141. (
  142. [이름] => 업데이트
  143. [클래스] => updateBean
  144. [메서드] => 업데이트
  145. )
  146. [콘텐츠] =>
  147. [결과] => 배열
  148. (
  149. [속성] => 배열
  150. (
  151. )
  152. [content] => /emp/edit_suc.jsp
  153. )
  154. )
  155. [4] => Array
  156. (
  157. [속성] => Array
  158. (
  159. [이름] => edit
  160. [class] => editBean
  161. [메서드] => edit
  162. )
  163. [내용] =>
  164. [결과] => 배열
  165. (
  166. [속성] => 배열
  167. (
  168. )
  169. [콘텐츠] => /emp/edit.jsp
  170. )
  171. )
  172. )
  173. )
  174. )
  175. )
复代码
  1. /**
  2. * 생성자: JetBrains PhpStorm.
  3. * 사용자: hedgehog
  4. * 날짜: 12-5-9
  5. * 시간: 下午4:37
  6. * 이 템플릿을 변경하려면 파일 | 설정 | 파일 템플릿.
  7. */
  8. class XmlToArray
  9. {
  10. private $xml;
  11. private $contentAsName= "content" ;
  12. private $attributesAsName="attributes";
  13. private $xml_array = array();
  14. public function setXml( $xmlstr )
  15. {
  16. $this-> ;xml = $xmlstr ;
  17. $this 반환 ;
  18. }
  19. 공개 함수 setContentAsName( $name )
  20. {
  21. $this->contentAsName = $name ;
  22. return $this ;
  23. }
  24. 공개 함수 setAttributeAsName( $name )
  25. {
  26. $this->attributesAsName = $name ;
  27. return $this ;
  28. }
  29. 비공개 함수 createXMLArray( $node,&$parent_node,$node_index =0)
  30. {
  31. $node_attrbutes= array() ;
  32. $node_name = $node->getName() ;
  33. $attributes = $node->attributes() ;
  34. $children = $node->children () ;
  35. // 遍历节点上的所有属性
  36. foreach( $attrname으로서의 $attributes => $attrvalue )
  37. {
  38. $attrvalue = ( string )$attrvalue ;
  39. $node_attrbutes[ $attrname ] = Trim( $attrvalue ) ;
  40. }
  41. $content = "";
  42. if( count($children) == 0 )
  43. {
  44. $content = ( 문자열 ) $node ;
  45. }
  46. $node_array = 배열(
  47. $this->attributesAsName =>$node_attrbutes ,
  48. $this->contentAsName => Trim( $content )
  49. );
  50. // 设置层级关系
  51. if( !isset( $parent_node[ $node_name ] ) )
  52. {
  53. $is = count( $parent_node ) ;
  54. if( !isset( $parent_node[ $this->attributesAsName ] ) && count( $parent_node ) > 0 )
  55. {
  56. $last_index = count( $parent_node ) -1 ;
  57. $parent_node =& $parent_node[ $last_index ];
  58. $parent_node[ $node_name ] = $node_array ;
  59. }
  60. else
  61. {
  62. $parent_node[ $node_name ] = $ node_array ;
  63. }
  64. }
  65. else
  66. {
  67. $append = &$parent_node[ $node_name ] ;
  68. if( isset( $append[ $this->attributesAsName ] ) )
  69. {
  70. $parent_node[ $node_name ] = array( $append );
  71. $append = &$parent_node[ $node_name ] ;
  72. }
  73. if( isset( $ 추가[ $node_index ] ) )
  74. {
  75. $append = &$append[ $node_index ] ;
  76. }
  77. // 追加
  78. array_push( $append , $node_array ) ;
  79. }
  80. $index = 0 ;
  81. // 递归操작
  82. foreach( $children as $childnode )
  83. {
  84. $parent = &$parent_node[ $node_name ] ;
  85. $this->createXMLArray( $childnode ,$parent,$index );
  86. }
  87. return $parent_node ;
  88. }
  89. 공용 함수 parseXml( $isjson=false)
  90. {
  91. $root = simplexml_load_string ( $this->xml ) ;
  92. $parent_node = array();
  93. $array = $this->createXMLArray( $root ,$parent_node ) ;
  94. $isjson을 반환하나요? json_encode( $array ) : $array ;
  95. }
  96. }
复代码


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

PHP는 주로 절차 적 프로그래밍이지만 객체 지향 프로그래밍 (OOP)도 지원합니다. Python은 OOP, 기능 및 절차 프로그래밍을 포함한 다양한 패러다임을 지원합니다. PHP는 웹 개발에 적합하며 Python은 데이터 분석 및 기계 학습과 같은 다양한 응용 프로그램에 적합합니다.

PHP와 Python : 그들의 역사에 깊은 다이빙PHP와 Python : 그들의 역사에 깊은 다이빙Apr 18, 2025 am 12:25 AM

PHP는 1994 년에 시작되었으며 Rasmuslerdorf에 의해 개발되었습니다. 원래 웹 사이트 방문자를 추적하는 데 사용되었으며 점차 서버 측 스크립팅 언어로 진화했으며 웹 개발에 널리 사용되었습니다. Python은 1980 년대 후반 Guidovan Rossum에 의해 개발되었으며 1991 년에 처음 출시되었습니다. 코드 가독성과 단순성을 강조하며 과학 컴퓨팅, 데이터 분석 및 기타 분야에 적합합니다.

PHP와 Python 중에서 선택 : 가이드PHP와 Python 중에서 선택 : 가이드Apr 18, 2025 am 12:24 AM

PHP는 웹 개발 및 빠른 프로토 타이핑에 적합하며 Python은 데이터 과학 및 기계 학습에 적합합니다. 1.PHP는 간단한 구문과 함께 동적 웹 개발에 사용되며 빠른 개발에 적합합니다. 2. Python은 간결한 구문을 가지고 있으며 여러 분야에 적합하며 강력한 라이브러리 생태계가 있습니다.

PHP 및 프레임 워크 : 언어 현대화PHP 및 프레임 워크 : 언어 현대화Apr 18, 2025 am 12:14 AM

PHP는 현대화 프로세스에서 많은 웹 사이트 및 응용 프로그램을 지원하고 프레임 워크를 통해 개발 요구에 적응하기 때문에 여전히 중요합니다. 1.PHP7은 성능을 향상시키고 새로운 기능을 소개합니다. 2. Laravel, Symfony 및 Codeigniter와 같은 현대 프레임 워크는 개발을 단순화하고 코드 품질을 향상시킵니다. 3. 성능 최적화 및 모범 사례는 응용 프로그램 효율성을 더욱 향상시킵니다.

PHP의 영향 : 웹 개발 및 그 이상PHP의 영향 : 웹 개발 및 그 이상Apr 18, 2025 am 12:10 AM

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까?스칼라 유형, 반환 유형, 노조 유형 및 무효 유형을 포함한 PHP 유형의 힌트 작업은 어떻게 작동합니까?Apr 17, 2025 am 12:25 AM

PHP 유형은 코드 품질과 가독성을 향상시키기위한 프롬프트입니다. 1) 스칼라 유형 팁 : PHP7.0이므로 int, float 등과 같은 기능 매개 변수에 기본 데이터 유형을 지정할 수 있습니다. 2) 반환 유형 프롬프트 : 기능 반환 값 유형의 일관성을 확인하십시오. 3) Union 유형 프롬프트 : PHP8.0이므로 기능 매개 변수 또는 반환 값에 여러 유형을 지정할 수 있습니다. 4) Nullable 유형 프롬프트 : NULL 값을 포함하고 널 값을 반환 할 수있는 기능을 포함 할 수 있습니다.

PHP는 객체 클로닝 (클론 키워드) 및 __clone 마법 방법을 어떻게 처리합니까?PHP는 객체 클로닝 (클론 키워드) 및 __clone 마법 방법을 어떻게 처리합니까?Apr 17, 2025 am 12:24 AM

PHP에서는 클론 키워드를 사용하여 객체 사본을 만들고 \ _ \ _ Clone Magic 메소드를 통해 클로닝 동작을 사용자 정의하십시오. 1. 복제 키워드를 사용하여 얕은 사본을 만들어 객체의 속성을 복제하지만 객체의 속성은 아닙니다. 2. \ _ \ _ 클론 방법은 얕은 복사 문제를 피하기 위해 중첩 된 물체를 깊이 복사 할 수 있습니다. 3. 복제의 순환 참조 및 성능 문제를 피하고 클로닝 작업을 최적화하여 효율성을 향상시키기 위해주의를 기울이십시오.

PHP vs. Python : 사용 사례 및 응용 프로그램PHP vs. Python : 사용 사례 및 응용 프로그램Apr 17, 2025 am 12:23 AM

PHP는 웹 개발 및 컨텐츠 관리 시스템에 적합하며 Python은 데이터 과학, 기계 학습 및 자동화 스크립트에 적합합니다. 1.PHP는 빠르고 확장 가능한 웹 사이트 및 응용 프로그램을 구축하는 데 잘 작동하며 WordPress와 같은 CMS에서 일반적으로 사용됩니다. 2. Python은 Numpy 및 Tensorflow와 같은 풍부한 라이브러리를 통해 데이터 과학 및 기계 학습 분야에서 뛰어난 공연을했습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

뜨거운 도구

WebStorm Mac 버전

WebStorm Mac 버전

유용한 JavaScript 개발 도구

SublimeText3 Linux 새 버전

SublimeText3 Linux 새 버전

SublimeText3 Linux 최신 버전

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.