SimpleXML을 사용하여 하이픈으로 연결된 이름이 있는 XML 노드 읽기
PHP에서 SimpleXML을 사용하여 XML 문서에서 데이터를 추출하는 것은 다음과 같은 요소가 발생할 때 어려워집니다. 하이픈으로 연결된 이름. 이 문제를 자세히 살펴보고 해결책을 찾아보겠습니다.
다음 XML을 고려하세요.
<gnm:Workbook xmlns:gnm="http://www.gnumeric.org/v10.dtd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.gnumeric.org/v9.xsd"> <office:document-meta xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" office:version="1.1"> <office:meta> <dc:creator>Mark Baker</dc:creator> <dc:date>2010-09-01T22:49:33Z</dc:date> <meta:creation-date>2010-09-01T22:48:39Z</meta:creation-date> <meta:editing-cycles>4</meta:editing-cycles> <meta:editing-duration>PT00H04M20S</meta:editing-duration> <meta:generator>OpenOffice.org/3.1$Win32 OpenOffice.org_project/310m11$Build-9399</meta:generator> </office:meta> </office:document-meta> </gnm:Workbook>
document-meta 요소와 해당 하위 요소를 읽으려면 다음을 고려하세요. 다음 초기 코드:
$xml = simplexml_load_string($gFileData); $namespacesMeta = $xml->getNamespaces(true); $officeXML = $xml->children($namespacesMeta['office']); var_dump($officeXML); echo '<hr />';
이 코드는 문서-메타를 포함하는 office 요소입니다. 그러나 $officeXML->document-meta를 사용하여 document-meta에 직접 액세스하려는 시도는 실패하고 int 0을 반환합니다.
이 동작의 이유는 SimpleXML의 하이픈 이름 처리에 있습니다. 기본적으로 하이픈으로 연결된 요소 이름을 camelCase로 변환합니다. 이 경우 "document-meta"는 "documentMeta"가 됩니다. 이 요소에 액세스하려면 다음 구문을 사용하세요.
$docMeta = $officeXML->{'document-meta'}; var_dump($docMeta);
중괄호와 문자열 표기법을 사용하면 SimpleXML의 기본 대소문자 변환 없이 실제 요소 이름에 액세스할 수 있습니다. 그러면 document-meta 요소가 성공적으로 덤프됩니다.
참고: 이 구문은 요소 노드에만 적용됩니다. @attributes 내의 속성 노드는 하이픈 연결에 관계없이 배열 표기법을 사용하여 직접 액세스할 수 있습니다.
위 내용은 PHP에서 SimpleXML을 사용하여 하이픈으로 연결된 XML 노드 이름에 액세스하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!