문제

PHP의 SimpleXML 기능을 사용하여 처음부터 XML 객체를 만들 수 있습니까? 함수 목록을 살펴보면 기존 XML 문자열을 객체로 가져올 수있는 방법이 있습니다. 그러나 처음부터 프로그래밍 방식으로 XML 객체를 생성하려면 가장 좋은 방법은 무엇입니까?

나는 당신이 simplexml_load_string ()을 사용하고 원하는 루트 문자열을 통과 할 수 있다는 것을 알았으며, 그와 같은 객체가 있습니다. 아이를 추가하여 조작 할 수있는 객체가 있습니다. 실제로로드하기 전에 일부 XML을 문자열로 하드 코딩합니다.

나는 그것을 사용하여 그것을했다 domdocument functions, DOM이 순수한 XML 문서를 만드는 것과 어떤 관련이 있는지 잘 모르기 때문에 약간 혼란 스럽지만 ... 아마도 이름이 나쁘다 :-)

도움이 되었습니까?

해결책

물론 넌 할 수있어. 예를 들어.

<?php
$newsXML = new SimpleXMLElement("<news></news>");
$newsXML->addAttribute('newsPagePrefix', 'value goes here');
$newsIntro = $newsXML->addChild('content');
$newsIntro->addAttribute('type', 'latest');
Header('Content-type: text/xml');
echo $newsXML->asXML();
?>

산출

<?xml version="1.0"?>
<news newsPagePrefix="value goes here">
    <content type="latest"/>
</news>

재미있어.

다른 팁

PHP5에서는 사용해야합니다 문서 개체 모델 대신 수업. 예시:

$domDoc = new DOMDocument;
$rootElt = $domDoc->createElement('root');
$rootNode = $domDoc->appendChild($rootElt);

$subElt = $domDoc->createElement('foo');
$attr = $domDoc->createAttribute('ah');
$attrVal = $domDoc->createTextNode('OK');
$attr->appendChild($attrVal);
$subElt->appendChild($attr);
$subNode = $rootNode->appendChild($subElt);

$textNode = $domDoc->createTextNode('Wow, it works!');
$subNode->appendChild($textNode);

echo htmlentities($domDoc->saveXML());

내 대답을 참조하십시오 여기. 처럼 DreamWerx.myopenid.com 지적,이 작업을 수행 할 수 있습니다. 단순 렉스, 하지만 DOM 확장 더 좋고 유연한 방법이 될 것입니다. 또한 세 번째 방법이 있습니다 : 사용 xmlwriter. DOM보다 사용하는 것이 훨씬 간단하므로 XML 문서를 처음부터 작성하는 것이 선호하는 방법입니다.

$w=new XMLWriter();
$w->openMemory();
$w->startDocument('1.0','UTF-8');
$w->startElement("root");
    $w->writeAttribute("ah", "OK");
    $w->text('Wow, it works!');
$w->endElement();
echo htmlentities($w->outputMemory(true));

그런데: 의지합니다 강아지 영형bject 오델; 이것은 XML 문서에 대한 표준화 된 API입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top