PHP操作XML功能齐全的xml操作类
编程之家提供一个功能齐全的xml操作类
/* xml操作类 */
class operXml
{
var $parser;
public function __construct()
{
$this->parser = xml_parser_create();
xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($this->parser, XML_OPTION_SKIP_WHITE, 1);
xml_set_object($this->parser, $this);
xml_set_element_handler($this->parser, "tag_open", "tag_close");
xml_set_character_data_handler($this->parser, "cdata");
}
public function parse($xmlStr="",$endtag=true)
{
$this->endtag = $endtag;
$this->xmlStr = $xmlStr;
$this->tree = new stdClass;
$this->tree->tag = "root";
$this->tree->props = new stdClass;
$this->tree->children = array();
$this->tree->p = NULL;
$this->tree->level = -1;
$this->deep = 0;
$this->pList = array($this->tree);
xml_parse($this->parser, $this->xmlStr);
if(count($this->tree->children)>0)
$this->root = $this->tree->children[0];
else
$this->root = NULL;
return $this;
}
public function tag_open($parser, $tag, $attributes)
{
$o = new stdClass;
$o->p = $this->pList[$this->deep];
$o->index = count($o->p->children);
$o->level = $o->p->level 1;
$o->tag = $tag;
$o->props = new stdClass;
while(list($key,$value)=each($attributes))
$o->props->{$key} = $value;
$o->value = "";
$o->children = array();
array_push($o->p->children,$o);
$this->deep ;
$this->pList[$this->deep] = $o;
}
public function cdata($parser, $cdata)
{
$this->pList[$this->deep]->value = $cdata;
}
public function tag_close($parser, $tag)
{
$this->deep--;
}
public function getNodeByProp() // 根据属性名称和值取得节点,
{ // 参数:属性名称,属性值1,属性值2,属性值3,...
$args = func_get_args();
$node = $this->tree;
for($i=1;$i
$node = $this->_getNodeByProp($node,$args[0],$args[$i]);
if($node==NULL) break;
}
return $node;
}
public function getChildByTag($node,$tag) // 取得$node节点下标签为$tag的节点
{
for($i=0;$i
{
if($node->children[$i]->tag==$tag)
return $node->children[$i];
}
return NULL;
}
public function getChildsByTag($node,$tag) // 取得$node节点下标签为$tag的节点,返回节点列表数组
{
$rs = array();
for($i=0;$i
if($node->children[$i]->tag==$tag)
array_push($rs,$node->children[$i]);
return $rs;
}
public function addRoot($tag) // 添加根节点
{
$this->tree->children = array();
$this->root = $this->addChild($this->tree,$tag);
return $this->root;
}
public function addChild($node,$tag) // 在$node节点下添加标签为$tag的节点,并返回添加的节点
{
$o = new stdClass;
$o->p = $node;
$o->level = $node->level 1;
$o->index = count($node->children);
$o->tag = $tag;
$o->props = new stdClass;
$o->value = "";
$o->children = array();
array_push($node->children,$o);
return $o;
}
public function delete($node) // 删除$node节点
{
$p = $node->p;
array_splice($p->children,$node->index,1);
for($i=0;$i
$p->children[$i]->index = $i;
}
public function move($dstNode,$srcNode) // 将srcNode移动到$dstNode下面
{
$this->delete($srcNode);
$srcNode->p = $dstNode;
$srcNode->level = $dstNode->level 1;
$srcNode->index = count($dstNode->children);
array_push($dstNode->children,$srcNode);
}
public function __toString() // 返回xml格式串
{
$s = "";
for($i=0;$i
$s .= $this->traversalNodeToXml($this->tree->children[$i],$this->endtag);
return $s;
}
public function save($xmlFile) // 保存成xml格式文件
{
$content = $this->__toString();
$fp = @fopen($xmlFile,"w") or die("创建文件失败:".$xmlFile);
@fwrite($fp,$content);
@fclose($fp);
@chmod($xmlFile,0777);
}
private function traversalNodeToXml($treeNode,$endtag)
{
$space = "";
$space = str_pad($s,$treeNode->level*2," ",STR_PAD_LEFT);
$s = $space."tag;
while(list($key,$value)=each($treeNode->props))
$s .= " $key="$value"";
$childCount = count($treeNode->children);
if($childCount==0)
{
if($treeNode->value!="" || $endtag)
$s .= ">".$treeNode->value."".$treeNode->tag.">
";
else
$s .= "/>
";
return $s;
}
$s .= ">
";
for($i=0;$i $s .= $this->traversalNodeToXml($treeNode->children[$i],$endtag);
$s .= $space."".$treeNode->tag.">
";
return $s;
}
private function _getNodeByProp($node,$propName,$propValue)
{
for($i=0;$i
{
$anode = $node->children[$i];
if(isset($anode->props) && isset($anode->

핫 AI 도구

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

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

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다

숙련된 PHP 개발자라면 이미 그런 일을 해왔다는 느낌을 받을 것입니다. 귀하는 상당한 수의 애플리케이션을 개발하고, 수백만 줄의 코드를 디버깅하고, 여러 스크립트를 수정하여 작업을 수행했습니다.

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

Python은 배우기 쉽고 강력한 기능을 통해 초보자에게 이상적인 프로그래밍 입문 언어입니다. 기본 사항은 다음과 같습니다. 변수: 데이터(숫자, 문자열, 목록 등)를 저장하는 데 사용됩니다. 데이터 유형: 변수의 데이터 유형(정수, 부동 소수점 등)을 정의합니다. 연산자: 수학 연산 및 비교에 사용됩니다. 제어 흐름: 코드 실행(조건문, 루프) 흐름을 제어합니다.

Python은 초보자에게 문제 해결 능력을 부여합니다. 사용자 친화적인 구문, 광범위한 라이브러리 및 변수, 조건문 및 루프 사용 효율적인 코드 개발과 같은 기능을 제공합니다. 데이터 관리에서 프로그램 흐름 제어 및 반복 작업 수행에 이르기까지 Python은 제공합니다.
