【IT168 专稿】简单,相当简单
除非你最近几年一直隐藏在洞穴里,否则你应该听说过XML(它 是越来越多的Web发布者为内容标记所求助的工具箱)了。你或许甚至已经在实际中看见过包含用户自定义标签和标记的XML文档了,而且你也许会想知道一个 人到底是如何将复杂的混乱的代码转化为人类可阅读的内容。
答案是,不容易。
虽然 PHP自版本4.0以来已经包含了对两种标准的解析(读取:变得有意义)XML方法(SAX和DOM)的支持,这些方法的复杂性和与生俱来的古怪性经常使 得除了最专业的XML开发人员外的其他开发人员放弃。然而,所有的这一切都随着PHP 5.0发生了变化,PHP 5.0介绍了一种全新的名为SimpleXML的XML扩展,该扩展消除了处理XML文档的所有(我确实是指全部)痛苦。继续阅读然后找出其是如何实现 的。
令人不愉快的旧时光
为了理解为什么SimpleXML这么酷,该到一个简短的历史课的时间了。
在 SimpleXML之前,有两种处理XML文档的方法。第一个就是SAX或者XML的简单API,它涉及遍历一个XML文档然后在解析器遇到不同类型的标 签时调用特定的函数。例如,你可能已经调用了一个函数来处理一个起始标签,另外一个函数来处理结束标签而第三个函数处理之间的数据。第二种方法是DOM或 者文档对象模型,其涉及在内存中创建一个代表XML文档的树,然后使用树遍历方法来操纵它。一旦到达树的一个特定节点,那么对应的内容就可以被检索和使用。
这 两种方法都不是特别的易于用户使用:SAX需要开发人员为XML文件中遇到的每种类型的元素定制事件处理器,而DOM方法使用面向对象模式,该模式除了内 存密集且因此对大型XML文档效率低之外而且趋向不需要开发人员。在更大的上下文中,PHP 4为其不同的XML扩展使用了大量的不同的支撑库,导致了不同的XML扩展工作方式的不一致,然后因此产生了互操作性的担忧(以及对开发人员带来的大量困 惑)。
在PHP 5.0中,通过采用libxml2库(http://www.xmlsoft.org/)作为所有XML扩展的标准库且通过使得不同的XML扩展操作更加 一致这种协调努力来修复这个问题。虽然PHP 5中XML最大的变化是由Sterling Hughes、Rob Richards和Marcus Börger开发的SimpleXML扩展,但该扩展试图使在PHP 5中解析XML文档比在PHP 4中解析XML文档更加友好。
SimpleXML 通过将XML文档转化为一个对象然后将该文档内元素转变为可以使用标准对象符号来访问的对象属性而工作。这使得向下获取XML层次结构中的任意一层的元素 以访问其内容变得容易。文档树的同一层次处的重复元素被表示为数组,同时,可定制的元素集合可以使用XPath(稍后详细介绍)位置路径来创建;这些集合 然后可以使用PHP的标准循环结构来处理。访问元素属性和访问关联数组的关键字一样简单(没有新的内容需要学习,而且也没有特殊的代码要编写)。
为 了一起使用SimpleXML和PHP,你的PHP建构必须包含对SimpleXML的支持。这种支持在PHP 5的UNIX和Windows平台的版本中默认是被激活的。阅读更多关于这方面的内容,请到http://www.php.net/manual/en /ref.simplexml.php。如果你是PHP 4的用户,那么你运气不好,SimpleXML只在PHP 5中可用。
儿童动物园
为了弄明白SimpleXML是如何工作的,请考虑下面的XML文件:
? xml version = " 1.0 " ?> Polly Parrot name > 3 age > parrot species > Pia Parrot mother > Peter Parrot father > parents > pet >
现在,你需要一种方法来获得包含在
php // set name of XML file $file = " pet.xml " ; // load file $xml = simplexml_load_file($file) or die ( " Unable to load XML file! " ); // access XML data echo " Name: " . $xml -> name . " \n " ; echo " Age: " . $xml -> age . " \n " ; echo " Species: " . $xml -> species . " \n " ; echo " Parents: " . $xml -> parents -> mother . " and " . $xml -> parents -> father . " \n " ; ?>
行动首先以simplexml_load_file()函数开始,该函数接受被解析的XML文件的路径和名称。文件解析的结果是一个PHP对象,该对象的 属性对应于根元素之下的元素。一个元素内的字符数据可以因而使用标准的对象->属性符号来访问,访问首先从根元素开始然后沿着文件的层次路径向下移 动。
正如你可以读取操作一样,因此你也可以写操作。SimpleXML使得修改特定XML元素的内容变得容易(简单的给对应的对象属性赋一个新值)。下面是一个例子:
php // set name of XML file $file = " pet.xml " ; // load file $xml = simplexml_load_file($file) or die ( " Unable to load XML file! " ); // modify XML data $xml -> name = " Sammy Snail " ; $xml -> age = 4 ; $xml -> species = " snail " ; $xml -> parents -> mother = " Sue Snail " ; $xml -> parents -> father = " Sid Snail " ; // write new data to file file_put_contents($file, $xml -> asXML()); ?>
这里,原始XML文件首先被读入,然后其每个元素内部的字符数据通过给对应的对象属性赋新值来修改。通常情况下被用于将XML树输出到标准输出设备上的asXML()方法在这个实例中结合file_put_contents()函数以使用新的数据覆盖原先的XML文档。罪恶之城
在XML层次结构中同一层次的重复元素被用数组元素表示因而可以使用数字索引来访问。为了明白这是如何工作的,考虑下面的XML文件:
xml version = " 1.0 " ?> pride sin > envy sin > anger sin > greed sin > sloth sin > gluttony sin > lust sin > sins >
下面是读取该XML文件然后从中取得数据的PHP脚本: php // set name of XML file $file = " sins.xml " ; // load file $xml = simplexml_load_file($file) or die ( " Unable to load XML file! " ); // access each
php // set name of XML file $file = " sins.xml " ; // load file $xml = simplexml_load_file($file) or die ( " Unable to load XML file! " ); // iterate over
未来事物的样子
SimpleXML可以像其操作元素一样透明地操作元素属性和它们的内容。属性-值对被表示为PHP关联数组的成员,而且可以像常规的数组元素那样被访问。为了明白这是如何工作的,请看下面的脚本:
php // create XML string $str = shapes > XML; // load string $xml = simplexml_load_string($str) or die ( " Unable to load XML string! " ); // for each shape // calculate area foreach ($xml -> shape as $shape) { if ($shape[ ' type ' ] == " circle " ) { $area = pi() * $shape[ ' radius ' ] * $shape[ ' radius ' ]; } elseif ($shape[ ' type ' ] == " rectangle " ) { $area = $shape[ ' length ' ] * $shape[ ' width ' ]; } elseif ($shape[ ' type ' ] == " square " ) { $area = $shape[ ' length ' ] * $shape[ ' length ' ]; } echo $area. " \n " ; } ?>
和之前使用外部的XMl文件的例子不同,该例子动态创建一个XML文档然后使用simplexml_load_string()方法将其加载到 SimpleXML中。然后XML使用foreach()循环来解析且其每个形状的面积在每个
X表示点
SimpleXML 也支持通过XPath位置路径来定制元素集合。对于那些XML新手来说,XPath是一种标准的XML文档寻址机制,该机制允许开发人员访问文档内的元 素、属性或者文本节点的集合。阅读更多关于XPath的内容,请访问http://www.w3.org/TR/xpath.html和http: //www.melonfire.com/community/columns/trog/article.php?id=83
为了明白它是如何工作的,考虑下面的XML文档:
xml version = " 1.0 " ?> Boneless chicken breasts desc > 2 quantity > item > Chopped onions desc > 2 quantity > item > Ginger desc > 1 quantity > item > Garlic desc > 1 quantity > item > Red chili powder desc > 1 quantity > item > Coriander seeds desc > 1 quantity > item > Lime juice desc > 2 quantity > item > ingredients >
现在,让我假定你想打印所有的
php // set name of XML file $file = " ingredients.xml " ; // load file $xml = simplexml_load_file($file) or die ( " Unable to load XML file! " ); // get all the
使用XPath,你甚至可以(举例而言)通过创建一个只有
php // set name of XML file $file = " ingredients.xml " ; // load file $xml = simplexml_load_file($file) or die ( " Unable to load XML file! " ); // get all the
没有XPath,完成这个功能将会比上述五行代码复杂得多。你自己试验一下然后看看是否是这样!
红磨坊的一夜
既然你已经明白了XPath所能做的事情,那么让我们以一个你实际上可能会如何使用XPath的例子作为结尾。
让我们假定你具有一系列的以XML标示的电影评论,如下所示:
xml version = " 1.0 " ?> Moulin Rouge title > Baz Luhrmann ' s over-the-top vision of Paris at the turn of the century is witty, sexy...and completely unforgettable teaser > Nicole Kidman person > Ewan McGregor person > John Leguizamo person > Jim Broadbent person > Richard Roxburgh person > cast > Baz Luhrmann director > 120 duration > Romance / Comedy genre > 2001 year > A stylishly spectacular extravaganza, Moulin Rouge is hard to categorize; it is , at different times, a love story, a costume drama, a musical, and a comedy. Director Baz Luhrmann (well - known for the very hip William Shakespeare ' s Romeo + Juliet) has taken some simple themes - love, jealousy and obsession - and done something completely new and different with them by setting them to music. body > 5 rating > review >
现在,你打算在你的Web站点上显示该评论。因此你需要一个PHP脚本以从该文件中提取数据然后将其放置在HTML模板中的适当位置。就你目前所学到的内容而言,这很容易,就像如下代码所演示的那样:
php // set name of XML file // normally this would come through GET // it's hard-wired here for simplicity $file = " 57.xml " ; // load file $xml = simplexml_load_file($file) or die ( " Unable to load XML file! " ); ?> head > php echo $xml -> title; ?> ( php echo $xml -> year; ?> ) h1 > php echo $xml -> teaser; ?> h3 > php echo $xml -> body; ?> Director: php echo $xml -> director; ?> b > Duration: php echo $xml -> duration; ?> min b > Cast: php foreach ($xml -> cast -> person as $person) { echo "$person "; } ?> b > Rating: php echo $xml -> rating; ?> b > font > body > html >

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

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

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

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

phphassignificallyimpactedwebdevelopmentandextendsbeyondit

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

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

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


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

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

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
