2009-12-25 3 views
0

PHP에서 이것을 쉽게 할 수있는 방법이 있습니까? 양식 텍스트 영역에서 XML로 포맷 된 일반 텍스트를 어떻게 가져 와서 PHP로 XML로 가져 가야합니까? 트리가 XML 객체가 된 후에 트리를 걷는 방법을 찾을 수 있습니다. 경고 : 경고의 전체 무리를 얻었다XML 텍스트를 양식 텍스트 영역에 ... XML로 PHP로 받아들이는 방법?

<html> 
<head><title></title></head> 
<body> 
</body> 

<?php 
echo $_SERVER['PHP_SELF']; 
$in_xml=$_POST['in_xml']; 
if ($in_xml) { 
    print "We got it!...";// . $in_xml; 
    $doc = new DOMDocument(); 
    $doc->loadXML($in_xml); 
} else { 
?> 

<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>"> 
<textarea name="in_xml" cols="40" rows="10"> 
    Enter your comment here 
</textarea> 
<input type="submit" value="Submit"> 
<?php 
} 
?> 

</html> 

: 여기


<?xml version="1.0"?> 

<videocollection> 
    <title id="1">Tootsie</title> 
    <genre>comedy</genre> 
    <year>1982</year> 
    <language>English</language> 
    <cast>Dustin Hoffman</cast> 
    <cast>Jessica Lang</cast> 
    <cast>Teri Gar</cast> 
    <cast>Sydney Pollak</cast> 
    <crew> 
     <director>Sydney Pollak</director> 
    </crew> 

    <title id="2">Jurassic Park</title> 
    <genre>science fiction</genre> 
    <year>1993</year> 
    <language>English</language> 
    <cast>Sam Neil</cast> 
    <cast>Laura Dern</cast> 
    <cast>Jeff Goldblum</cast> 
    <crew> 
     <director>Steven Spielberg</director> 
    </crew> 

    <title id="3">Mission Impossible</title> 
    <genre>action</genre> 
    <year>1996</year> 
    <language>English</language> 
    <cast>Tom Cruise</cast> 
    <cast>Jon Voight</cast> 
    <cast>Emmanuelle Beart</cast> 
    <cast>Jean Reno</cast> 
    <crew> 
     <director>Brian de Palma</director> 
    </crew> 
</videocollection> 
내 코드입니다 :있는 DOMDocument ::

그냥이 샘플 XML에 richsage의 기술을 시도 loadXML() [domdocument.loadxml] : 문자열이 Entity에서 'or'을 기대하지 않습니다. 줄 : 1/Library/WebServer/Do/Library/WebServer/Documents/sandbox /에서 12 행의 캐스팅/샌드 박스/parse_xml/index.php

경고 : DOMDocument :: loadXML (domdocument.loadxml) parse_xml/index.php on line 12

경고 : DOMDocument :: loadXML() [domdocument.loadxml] : /Library/WebServer/Documents/sandbox/parse_xml/index.php의 엔터티, 줄에 공백이 필요합니다. on line 12

경고 : DOMDocument :: loadXML (domdocument.loadxml) : 구문 분석 XML 선언 :/Library/WebServer/Documents/sandbox/parse_xml/index. php on line 12

엔티티 라인 예상 '또는': 91,363,210

경고 : DOMDocument를 :: loadXML() domdocument.loadxml] AttValue 4 /Library/WebServer/Documents/sandbox/parse_xml/index.php 선 12

경고 : DOMDocument를 :: loadXML() domdocument.loadxml] : 라인 /Library/WebServer/Documents/sandbox/parse_xml/index.php 12

경고 4 : 속성은 엔티티 라인 오류가있는 DOMDocument를 구성 : : loadXML() [domdocument.loadxml] : Entity에서 시작 태그 제목 줄 4의 끝 부분을 찾을 수 없습니다. 줄 4 : /Library/WebServer/Documents/sandbox/parse_xml/index.php 12 줄에

경고 : DOMDocument :: loadXML() [do mdocument.loadxml] 열기 및 종료 태그 불일치 : 라인 /Library/WebServer/Documents/sandbox/parse_xml/index.php 12

경고 4 : 엔티티 videocollection 선로 (3)와 제목 라인있는 DOMDocument :: loadXML() [domdocument.loadxml] : 엔티티의 문서 끝에있는 추가 내용, 줄 : 5 /Library/WebServer/Documents/sandbox/parse_xml/index.php 12 행

답변

3

DOMDocument 클래스를 사용할 수 있습니다 PHP에서 : $ yourXML 당신이 당신의 형태 (예를 통해 $ _POST 또는 이와 유사한 것)에서 얻은 한 XML 데이터입니다

$doc = new DOMDocument(); 
$doc->loadXML($yourXML); 

. 일단이 작업을 완료하면 설명한대로 객체를 걷거나 XPath 등을 사용하여 원하는대로 요소를 탐색하고 선택할 수 있습니다.

+0

감사합니다. richsage ... 이것은 내가 원하는 기능입니다. 나는 샘플 XML을 사용해 보았지만 텍스트 상자를 통해 입력 할 때 많은 오류가 발생했습니다. 내 PHP에 텍스트를 하드 코딩하면, 문제가없는 것처럼 보입니다. 어쩌면 텍스트 영역에서 입력을 피할 필요가 있을까요? – milesmeow

+0

마술 따옴표가 있거나 유사 할 수 있습니다 (http://php.net/manual/en/security.magicquotes.php 참조). 이 기능을 비활성화하고 더 나은지 확인해보십시오. – richsage

+0

PS 무슨 오류가보고 계셨습니까? – richsage

관련 문제