>  기사  >  백엔드 개발  >  XML을 읽는 PHP 클래스

XML을 읽는 PHP 클래스

WBOY
WBOY원래의
2016-07-25 09:04:081264검색
  • ');

  • < p> foreach($item as $list)
  • {
  • echo('
  • ');
  • echo('
  • ');
  • echo('
  • ');
  • echo(' ');
  • }

  • echo('

  • ');

  • echo('

    1. #-------------------- ---------

    2. #
    3. # XML 라이브러리, Keith Devens 작성, 버전 1.2b
    4. # http://keithdevens.com/software/phpxml
    5. #
    6. # 이 코드는 오픈 소스이며 예술 라이선스와 유사한 조건에 따라 공개됩니다.
    7. # http://keithdevens.com/software/license에서 라이센스를 읽어보세요.
    8. #
    9. #--------------------------------------------
    10. # XML_unserialize: 원시 XML을 매개변수(문자열)로 사용합니다.
    11. # 동등한 PHP 데이터 구조를 반환합니다.
    12. #------------------- ----------
    13. 함수 & XML_unserialize(&$xml){
    14. $xml_parser = &new XML();
    15. $data = &$xml_parser->parse($xml);
    16. $xml_parser->destruct();
    17. $data를 반환합니다.
    18. }
    19. ------------#####
    20. # XML_serialize: 모든 PHP 데이터 구조를 XML로 직렬화합니다.
    21. # 하나의 매개변수, 즉 직렬화할 데이터를 사용합니다. 배열이어야 합니다.
    22. ----------#
    23. 함수 & XML_serialize(&$data, $level = 0, $prior_key = NULL){
    24. if($level == 0){ ob_start(); echo '',"n"; }
    25. while(list($key, $value) = Each($data))
    26. if(!strpos($key, ' attr')) # 속성이 아닌 경우
    27. #하지 않습니다. 속성 자체를 처리하지 않으므로 속성이 있는 빈 요소
    28. #의 경우 해당 요소를 NULL

    29. 로 설정해야 합니다. if(is_array($value) 및 array_key_exists(0, $value)){

    30. XML_serialize($value, $level, $key);
    31. }else{
    32. $tag = $prior_key ? $prior_key : $키;
    33. echo str_repeat("t", $level),'<',$tag;
    34. if(array_key_exists("$key attr", $data)){ # 이 요소에 대한 속성이 있는 경우
    35. while(list($attr_name, $attr_value) = Each($data["$key attr" ]))
    36. echo ' ',$attr_name,'="',htmlspecialchars($attr_value),'"';
    37. 재설정($data["$key attr"]);
    38. }

    39. if(is_null($value)) echo " />n";

    40. elseif(!is_array($value)) echo '>',htmlspecialchars($value),"n";
    41. else echo ">n",XML_serialize($value, $level 1),str_repeat("t", $level),"n";
    42. }
    43. 재설정($data);
    44. if($level == 0){ $str = &ob_get_contents(); ob_end_clean(); $str을 반환; }
    45. }
    46. #----------#
    47. # XML 클래스: PHP의 XML 처리 기능과 함께 사용되는 유틸리티 클래스
    48. #----------#
    49. class XML{
    50. var $parser; #XML 파서에 대한 참조
    51. var $document; #지금까지 구축된 전체 XML 구조
    52. var $parent; # 현재 부모에 대한 포인터 - 부모는 배열이 됩니다.
    53. var $stack; #각 중첩 수준에서 가장 최근 상위 항목의 스택
    54. var $last_opened_tag; #마지막으로 열린 태그를 추적합니다.

    55. function XML(){

    56. $this->parser = &xml_parser_create();
    57. xml_parser_set_option(&$this->파서, XML_OPTION_CASE_FOLDING, false);
    58. xml_set_object(&$this->parser, &$this);
    59. xml_set_element_handler(&$this->parser, 'open','close');
    60. xml_set_character_data_handler(&$this->parser, 'data');
    61. }
    62. function destruct(){ xml_parser_free(&$this->parser); }
    63. 함수 & 구문 분석(&$data){
    64. $this->document = array();
    65. $this->스택 = 배열();
    66. $this->parent = &$this->문서;
    67. return xml_parse(&$this->parser, &$data, true) ? $this->문서: NULL;
    68. }
    69. 함수 열기(&$parser, $tag, $attributes){
    70. $this->data = ''; #임시 cdata 저장
    71. $this->last_opened_tag ​​= $tag;
    72. if(is_array($this->parent) and array_key_exists($tag,$this->parent)){ #이 태그를 이전에 본 경우
    73. if(is_array($this-> parent[$tag]) and array_key_exists(0,$this->parent[$tag])){ # 키가 숫자인 경우
    74. #이것은 우리가 발견한 $tag의 세 번째 또는 이후 인스턴스입니다.
    75. $key = count_numeric_items($this->parent[$tag]);
    76. }else{
    77. #이것은 우리가 본 $tag의 두 번째 인스턴스입니다.
    78. 주위로 이동 if(array_key_exists("$tag attr",$this->parent)){
    79. $arr = array('0 attr'=>&$this->parent["$tag attr"], &$this->parent[$tag]);
    80. unset($this->parent["$tag attr"]);
    81. }else{
    82. $arr = array(&$this->parent[$tag]);
    83. }
    84. $this->parent[$tag] = &$arr;
    85. $키 = 1;
    86. }
    87. $this->parent = &$this->parent[$tag];
    88. }else{
    89. $key = $tag;
    90. }
    91. if($attributes) $this->parent["$key attr"] = $attributes;
    92. $this->parent = &$this->parent[$key];
    93. $this->stack[] = &$this->parent;
    94. }
    95. function data(&$parser, $data){
    96. if($this->last_opened_tag ​​!= NULL) # 태그 사이에 공백을 저장할 필요가 없습니다
    97. $this ->데이터 .= $데이터;
    98. }
    99. 함수 닫기(&$parser, $tag){
    100. if($this->last_opened_tag ​​== $tag){
    101. $this->parent = $this-> 데이터;
    102. $this->last_opened_tag ​​= NULL;
    103. }
    104. array_pop($this->stack);
    105. if($this->stack) $this->parent = &$this->stack[count($this->stack)-1];
    106. }
    107. }
    108. function count_numeric_items(&$array){
    109. return is_array($array) ? count(array_filter(array_keys($array), 'is_numeric')) : 0;
    110. }
    111. ?>

    复主代码

    응용 사례, XML 소스 주소: http://data.cnaz.com/spread/?tid=7&sid=42845&order=date&flags=desc&num=50 &page=1&hosts=pic.ttiankan.com&code=xml

    1. include('xml.php') //참조 PHP XML 작업 클래스< p>

    2. $page=$_GET['page'];

    3. if(empty($page) || !is_numeric($page)) $ 페이지 =1;

    4. //아이돌스타

    5. $xml = file_get_contents('http://data.cnaz.com/spread/?tid=7&sid=42845&order=date&flags= desc&num =50
    6. &page='.$page.'&hosts=pic.ttiankan.com&code=xml');

    7. //$xml = file_get_contents("php : //input"); //POST에서 입력 스트림 읽기
    8. $data=XML_unserialize($xml);

    9. $item=$data['rss'] [' 채널'];

    10. $link = $item['link'];

    11. $description= $item['description'];
    12. $keywords = $ 항목[ '키워드'];
    13. $totalnum = $item['totalnum'];
    14. $usetime = $item['usetime'];

    15. $totalpage= ceil( $totalnum/50);

    16. echo('

      키워드:'.$keywords.' ');
    17. echo('총 레코드 수:'.$totalnum.', 각 페이지에 50개의 레코드가 표시되며 총 레코드는'.$ totalpage.' 페이지, 현재 페이지 '.$page.'
    ');

  • $item=$item['item'];

  • echo('

  • ');

  • echo('

  • 분류
  • 제목 링크
    '.$list['sort'].' < /td>');
  • echo('
  • '.$list['title'].' '.$list['link'].'
  • ');
  • if( $page>1) echo('이전 페이지 ');
  • if ($page< $totalpage) echo('다음 페이지>');
  • echo( '
  • ');
  • ?>

  • 코드 복사

    Script Academy 편집자가 권장하는 사항: PHP 작업 xml의 예제 코드 PHP에서 xml 파일을 읽고 쓰는 방법 소개 XML 파일을 출력하기 위해 함수 메소드를 사용하는 PHP의 예 php 함수를 사용하여 XML 파일을 읽는 예 PHP로 XML을 읽는 여러 가지 방법 XML 값을 읽는 PHP 코드 php 운영 xml의 다양한 방법을 파싱 PHP로 XML 파일을 생성하는 4가지 방법 php에서 xml을 생성하는 간단한 예제에 대한 자세한 설명 PHP를 사용하여 xml에 데이터를 추가하는 예 PHP를 사용하여 XML을 작동하는 DOMDocument 클래스 알아보기



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

    관련 기사

    더보기