2012-12-21 9 views
0

매우 큰 XML이 있습니다. 그것은 필드를 가지고 있습니다.XML 필드를 PHP로 매핑

<SegrigatedQualification> 
    <EducationSplit> 
     <University><![CDATA[G. H. Raisoni College of Engineering]]></University> 
     <Degree><![CDATA[Engineering]]></Degree> 
     <Year><![CDATA[2011]]></Year> 
    </EducationSplit> 
    <EducationSplit> 
     <University><![CDATA[G. H. Raisoni College of Engineering]]></University> 
     <Degree><![CDATA[Engineering]]></Degree> 
     <Year><![CDATA[2010]]></Year> 
    </EducationSplit> 
    <EducationSplit> 
     <University><![CDATA[G. H. Raisoni College of Engineering]]></University> 
     <Degree><![CDATA[Engineering]]></Degree> 
     <Year><![CDATA[2009]]></Year> 
    </EducationSplit> 
    <EducationSplit> 
     <University><![CDATA[Diploma I.T]]></University> 
     <Degree><![CDATA[Diploma I.T]]></Degree> 
     <Year><![CDATA[2008]]></Year> 
    </EducationSplit> 
    <EducationSplit> 
     <University><![CDATA[Nasik Board]]></University> 
     <Degree><![CDATA[S.S.C]]></Degree> 
     <Year><![CDATA[2003]]></Year> 
    </EducationSplit> 
    </SegrigatedQualification> 

필드를 매핑하고 모든 xml 정보를 테이블에 저장하려고합니다. 문제는 내가 열을 만들면 SagrigratedQualificaton 어떻게 교육 분할 또는 대학, 학위, 연도를 한 행에 저장할 수 있습니까? 왜냐하면 내가 별도의 열을 만들면 대학 정보, 학위 등이 중복 된 방식으로 두 개 이상의 행을 취할 것입니다. xml을 테이블에 매핑하는 가장 좋은 방법은 무엇입니까?

+0

당신은 위로 읽어야 [데이터베이스 정규화] (http://en.wikipedia.org/wiki/Database_normalization)을 읽고, 배운 것을 바탕으로 테이블 구조를 만드십시오. – Charles

+0

당신이 말하기를 원하지만 많은 필드가 동적이어서 테이블에 그 필드가 없다면 나중에 추가 할 것입니다. –

답변

0

관계형 데이터베이스 ... 각 xml 구조는 다른 테이블의 다른 레코드 여야합니다. 또는 간단하게 유지하고 이것을 일부 텍스트 또는 BLOB 필드에 저장하십시오.

+0

흠. 나를 위해 마지막 옵션이 될 것입니다. –

+0

다음 improvise ... 당신을 위해 가장 잘 작동하고 거기에 정보를 덤프 테이블 구조를 만듭니다. 부모/자식 노드 이름을보다 창의적인 필드 이름'educationsplit_university' 등으로 병합 할 수 있습니다. 그런 다음 재귀 함수를 작성하여 XML을 단일 차원 키 => 값 배열로 변환하고 – Alex

+0

저장하십시오.하지만 첫 번째 단계는 시도 할 수 있습니다. xml에 필드가있는 테이블을 만들고 키 값으로 매핑하면이 모든 작업이 너무 많은 시간이 걸릴 것이므로 쉬운 솔루션을 찾아야합니다. –

0

MagicParser와 같은 것을 사용하여 데이터를 추출한 다음 쉽게 자신의 테이블과 필드에 매핑 할 수 있습니다.

+0

감사합니다 그것을 위해 체크 아웃. –

+0

당신은 그것을 밖으로 검사 할 수 있으며 여기에 귀하의 XML을 구문 분석하는 방법을 참조하십시오 : http://www.magicparser.com/demo?fileID=50D402D0B7893&record=2 – MrTechie

+0

고마워, 내가이 도구를 사용해보십시오. 도구는 좋지만 모든 필드를 구문 분석하지 않았습니다. 이 도구는 작은 xml에 사용할 수 있습니다. –

0
<?php 
require("MagicParser.php"); 

function myRecordHandler($record){ 


// This is where you write your code to process each record, such as loading a database 

// The following code will print out each field in your sample data: 
print $record["EDUCATIONSPLIT"]; 
print $record["UNIVERSITY"]; 
print $record["DEGREE"]; 
print $record["YEAR"]; 
} 

$data = ""; // string variable contianing the data to parse 

MagicParser_parse("string://".$data,"myRecordHandler","xml|SEGRIGATEDQUALIFICATION/EDUCATIONSPLIT/"); 
?> 

주 : 실제 파일에서로드 할 경우, 당신은 단순히이 같은 MagicParser_parse을 $ 데이터 참조를 제거 할 것 :

MagicParser_parse("your-xml-file.xml".$data,"myRecordHandler","xml|SEGRIGATEDQUALIFICATION/EDUCATIONSPLIT/"); 
+0

감사합니다 Alex couldnt는 그것을 올바르게 얻는다 :( – MrTechie