PHP에서 XML 데이터를 처리하는 것이 일반적인 작업입니다. PHP는 XML을 구문 분석하고 조작하는 데 많은 기능을 제공합니다. 여기서 Simplexml_import_dom 과 Simplexml_load_string 은 두 가지 일반적인 기능입니다. 모두 XML 데이터를 SimpleXML 객체로 변환 할 수 있지만 다른 사용 및 해당 시나리오가 있습니다. 이 기사는이 두 기능을 자세히 비교하고 각각의 사용 시나리오를 탐색합니다.
Simplexml_load_String 함수는 XML 형식의 simplexml 객체에 문자열을로드하고 구문 분석하는 데 사용됩니다. 이 기능은 XML 데이터가 문자열 형식으로 저장 될 때 특히 적합하며, 후속 데이터 작업을 용이하게하기 위해 SimpleXML 객체로 직접 변환 할 수 있습니다.
<span><span><span class="hljs-title function_ invoke__">simplexml_load_string</span></span><span>(</span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$data</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$class_name</span></span><span> = </span><span><span class="hljs-string">"SimpleXMLElement"</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$options</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$ns</span></span><span> = </span><span><span class="hljs-literal">NULL</span></span><span>, </span><span><span class="hljs-keyword">bool</span></span><span> </span><span><span class="hljs-variable">$is_prefix</span></span><span> = </span><span><span class="hljs-literal">FALSE</span></span><span>)
</span></span>
$ 데이터 : 구문 분석 할 XML 데이터는 유효한 XML 문자열이어야합니다.
$ class_name : 옵션 매개 변수, 반환 된 객체 유형을 지정하면 기본값은 SimplexMlement 입니다.
$ 옵션 : 구문 분석 옵션 (일반적으로 0)은 XML 구문 분석을 처리하는 방법을 정의합니다.
$ NS : 네임 스페이스를 지정하십시오.
$ is_prefix : 네임 스페이스를 접두사로 구문 분석할지 여부.
<span><span><span class="hljs-variable">$xmlString</span></span><span> = </span><span><span class="hljs-string">'<root><name>Tom</name><age>25</age></root>'</span></span><span>;
</span><span><span class="hljs-variable">$xmlObject</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_load_string</span></span><span>(</span><span><span class="hljs-variable">$xmlString</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$xmlObject</span></span><span>->name; </span><span><span class="hljs-comment">// 산출:Tom</span></span><span>
</span></span>
Simplexml_import_dom 함수는 DOM (문서 개체 모델) 객체를 SimpleXML 객체로 변환하는 데 사용됩니다. DOM 확장을 사용하여로드하거나 생성 된 XML 데이터에 적합합니다. 이 함수를 사용하면 DOM 객체를 SimpleXML 객체로 변환하여 SimpleXML의 Simple API를 사용하여 추가 처리 할 수 있습니다.
<span><span><span class="hljs-title function_ invoke__">simplexml_import_dom</span></span><span>(DOMNode </span><span><span class="hljs-variable">$node</span></span><span>, </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$class_name</span></span><span> = </span><span><span class="hljs-string">"SimpleXMLElement"</span></span><span>)
</span></span>
$ 노드 : 일반적으로 DOM Extension을 통해 얻은 유효한 DOM 노드 객체입니다.
$ class_name : 반환 된 객체 유형을 지정하면 기본값은 SimplexMlElement 입니다.
<span><span><span class="hljs-variable">$dom</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DOMDocument</span></span><span>();
</span><span><span class="hljs-variable">$dom</span></span><span>-></span><span><span class="hljs-title function_ invoke__">loadXML</span></span><span>(</span><span><span class="hljs-string">'<root><name>Tom</name><age>25</age></root>'</span></span><span>);
</span><span><span class="hljs-variable">$xmlObject</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_import_dom</span></span><span>(</span><span><span class="hljs-variable">$dom</span></span><span>->documentElement);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$xmlObject</span></span><span>->name; </span><span><span class="hljs-comment">// 산출:Tom</span></span><span>
</span></span>
simplexml_load_string 및 simplexml_import_dom 의 궁극적 인 목적은 동일하지만 XML 데이터를 SimpleXML 객체로 변환하는 것은 다음과 같은 주요 차이점이 있습니다.
특성 | Simplexml_load_string | Simplexml_import_dom |
---|---|---|
입력 유형 | XML 문자열 | DOM 노드 객체 |
시나리오를 사용하십시오 | XML 형식 문자열을 구문 분석하는 데 적합하며 일반적으로 외부 소스 (예 : 파일, API 응답 등)로부터 데이터를 수신합니다. | 로드 또는 생성 된 DOM 객체를 SimpleXML 객체로 변환하는 데 적합합니다. |
데이터 소스 | 문자열 양식의 XML 데이터 | 사용하기 전에 DOM 확장을 사용하여 DOM 객체를로드하거나 생성해야합니다. |
일반적인 용도 | 데이터베이스, 파일 또는 API 응답과 같은 외부 소스에서 XML 데이터를로드하여 구문 분석합니다. | DOM 객체를 SimpleXML 객체로 변환하여 DOM Extension을 사용하여 XML을 작동 할 때 처리를 단순화합니다. |
확장에 의존합니다 | DOM 확장에 의존 할 필요가 없으며 SimpleXML 확장 만 | PHP가 필요한 DOM 확장 |
simplexml_load_string은 XML 데이터를 수신하고 즉시 구문 분석하려면 매우 편리한 기능입니다. 예를 들어, API 요청을 통해 XML 형식 응답을 받거나 파일에서 XML 문자열 컨텐츠를 읽으면 SimpleXML_Load_String을 사용하여 SimpleXML 객체로 구문 분석하십시오.
<span><span><span class="hljs-variable">$xmlString</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">'data.xml'</span></span><span>);
</span><span><span class="hljs-variable">$xmlObject</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_load_string</span></span><span>(</span><span><span class="hljs-variable">$xmlString</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$xmlObject</span></span><span>->product->name; </span><span><span class="hljs-comment">// 산출产品名称</span></span><span>
</span></span>
이 경우 Simplexml_load_string은 간단하고 효율적인 솔루션을 제공합니다.
simplexml_import_dom은 DOM 객체를 처리 해야하는 시나리오에 적합합니다. DOM 내선을 사용할 때 (예 : domdocument 클래스를 통해 XML 파일을로드하거나 XML 구조를 생성하는 등) SimpleXML의 간결한 인터페이스를 사용하려면 SimpleXml_import_dom이 좋은 선택입니다. 예를 들어:
<span><span><span class="hljs-variable">$dom</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title class_">DOMDocument</span></span><span>();
</span><span><span class="hljs-variable">$dom</span></span><span>-></span><span><span class="hljs-title function_ invoke__">load</span></span><span>(</span><span><span class="hljs-string">'data.xml'</span></span><span>);
</span><span><span class="hljs-variable">$xmlObject</span></span><span> = </span><span><span class="hljs-title function_ invoke__">simplexml_import_dom</span></span><span>(</span><span><span class="hljs-variable">$dom</span></span><span>->documentElement);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-variable">$xmlObject</span></span><span>->product->name; </span><span><span class="hljs-comment">// 산출产品名称</span></span><span>
</span></span>
이 경우 Simplexml_import_dom을 사용하면 단순한 API를 즐기면서 DOM의 힘을 계속 활용할 수 있습니다.
Simplexml_load_String은 XML 문자열을 단순한 XML 객체로 구문 분석하는 데 적합하며 특히 외부에서 획득 한 XML 데이터를 처리하는 데 적합합니다.
Simplexml_import_dom은 기존 DOM 노드를 SimpleXML 객체로 변환하는 데 적합하며 DOM 확장과 함께 사용해야하는 시나리오에 적합합니다.
둘 다 결국 SimpleXML 객체를 반환하지만 사용 된 시나리오는 다릅니다. 선택할 기능은 데이터 소스 및 요구에 따라 결정해야합니다.