XPath (XML Path Language)는 XML 문서에서 정보를 찾는 데 사용되는 언어입니다. PHP에서 XPath는 DOMXPATH 클래스를 통해 XML 문서를 쿼리하고 작동하는 기능을 제공합니다. PHP에서 XPath 기능을 사용하는 방법을 배우는 것은 XML 또는 HTML 컨텐츠를 처리하는 데 매우 중요합니다. 이 기사는 PHP에서 XPath를 사용하여 초보자가 기본 사용을 이해하도록 도와주는 방법을 소개합니다.
PHP에서 XML 문서를 작동하면 일반적으로 DOM (Document Object Model) 확장자를 사용하는 반면 DOMXPATH는 XPATH 쿼리를 수행하는 데 사용되는 클래스입니다. 먼저 XML 문서를로드하고 조작하는 방법을 이해해야합니다.
<?php
// aDOMDocument물체
$dom = new DOMDocument();
// 짐XML문서
$dom->load('example.xml'); // 가정example.xml당신이 다루고 싶은 것입니다XML문서
// 만들다DOMXPath물체
$xpath = new DOMXPath($dom);
?>
XPath 쿼리는 XML 문서에서 요소를 검색하는 간결한 방법입니다. domxpath 클래스 방법을 통해 다른 유형의 쿼리를 실행할 수 있습니다.
XML 문서에 여러 <book> 요소가 포함되어 있고 다음은 모든 <book> 요소를 얻는 코드입니다.
<?php
$query = "//book"; // XPath표현,모든 것을 나타냅니다<book>요소
$books = $xpath->query($query);
foreach ($books as $book) {
echo $book->nodeValue . "\n"; // 각 책의 내용을 출력하십시오
}
?>
조건에 따라 특정 요소를 필터링 할 수도 있습니다. 예를 들어, 모든 책을 50보다 큰 가격으로 필터링합니다.
<?php
$query = "//book[price>50]"; // XPath표현,필터 가격은보다 큽니다50서적
$expensiveBooks = $xpath->query($query);
foreach ($expensiveBooks as $book) {
echo $book->nodeValue . "\n"; // 输出满足条件서적名
}
?>
요소의 속성 값을 가져와야하는 경우 @ 기호를 통해 액세스 할 수 있습니다. 예를 들어 각 책의 ID 속성을 가져옵니다.
<?php
$query = "//book/@id"; // 모든 것을 얻으십시오<book>요소的id재산
$ids = $xpath->query($query);
foreach ($ids as $id) {
echo $id->nodeValue . "\n"; // 출력ID
}
?>
때로는 XML 파일이 아닌 HTML 파일을 처리해야 할 수도 있습니다. PHP의 domdocument 클래스는 또한 HTML 컨텐츠로드를 지원하며 약간의 수정 만 필요합니다.
<?php
// aDOMDocument물체
$dom = new DOMDocument();
// 짐HTML콘텐츠
@$dom->loadHTMLFile('example.html'); // 가정example.html그것은 당신입니다HTML문서
// 만들다DOMXPath물체
$xpath = new DOMXPath($dom);
// 사용XPath질문HTML요소
$query = "//a[@href]"; // 모든 것을 얻으십시오带有href재산的<a>상표
$links = $xpath->query($query);
foreach ($links as $link) {
echo $link->getAttribute('href') . "\n"; // 모든 링크를 출력합니다href재산
}
?>
실제 애플리케이션에서 XPath 쿼리는 특수 문자 또는 네임 스페이스가 포함 된 XML 문서를 만날 수 있습니다. 현재 DomxPath 의 RegisterNamespace () 메소드를 사용하여 네임 스페이스를 처리해야합니다. 예를 들어:
<?php
$dom->load('example_with_namespace.xml');
$xpath = new DOMXPath($dom);
// 네임 스페이스를 등록하십시오
$xpath->registerNamespace('ns', 'http://www.example.com/namespace');
// 사용命名空间질문
$query = "//ns:book"; // 질문带有命名空间的<book>요소
$books = $xpath->query($query);
foreach ($books as $book) {
echo $book->nodeValue . "\n";
}
?>
domxpath :: query ()를 사용하는 경우 쿼리 결과가 비어 있으면 반환 된 빈 Domnodelist 객체를 사용하므로 $ result-> 길이를 사용하여 결과가 있는지 확인할 수 있습니다.
html을 처리 할 때 domdocument :: loadhtml ()는 html 형식 오류를 무시하지만 xml 형식이 잘못되면 load () 메소드가 거짓을 반환하고 오류 처리가 필요합니다.
PHP의 XPath 기능은 매우 강력하며 XML 및 HTML 문서에서 요소를 효율적으로 쿼리하고 작동하도록 도와줍니다. DOMXPATH 클래스를 통해 문서에서 데이터를 쉽게 추출하고 조건부 필터링을 수행하며 요소의 속성을 얻고 다른 네임 스페이스와 특수 문자를 처리 할 수 있습니다. 이러한 기본 사용법을 마스터 한 후 실제 프로젝트에서 XML 및 HTML을 처리하는 효율성을 크게 향상시킬 수 있습니다.