2011-08-15 6 views
0

다음과 같이 xml 데이터 교환을 수행하고 싶습니다.내가 모르는 임의/동적 XML 태그 이름을 읽는 방법은 무엇입니까?

들어오는 xml 데이터에는 태그 이름을 알 수없는 태그가 있습니다.

태그 이름을 몰라도이 태그를 읽을 수 있습니까? 또한 데이터 속성으로 태그 이름을 어떻게 얻을 수 있습니까?

예 : 다른 환자 기록을 읽고 싶습니다. 모든 환자는 서로 다른 질병을 앓고 있습니다. '심장병', '암'과 같은

<heart disease>serious</heart disease> 
<cancer>normal</cancer> 

이전에는 두 태그를 모두 알지 못합니다. 하지만 태그 이름을 읽고 그것을 제시하고 싶습니다. 마지막으로, 내가 데이터를 얻을 수 있습니다 심장 질환 : 일반 심각한 암 :

+0

힌트 : 여기 XML의 유효성을 확인하십시오. http://www.w3schools.com/xml/xml_validator.asp – 321X

답변

1

글쎄, 난 내가 먼저 공백이 유효한 XML 태그를하지 않습니다 있음을 경고해야한다고 생각합니다. <white space>STUFF</white space>을 추가 할 수 있지만 <white> 태그로 읽습니다. 좀 더 용서할 수있는 통역사라면, 사실이 space 부울 속성이라는 것을 알 수 있습니다. \s-으로 바꿉니다. DOMDocument를 가진

, 그들은 자식 노드, 당신은 적절하게 이름을 childNodes 재산 사용하는 것이 있다는 사실이 아닌 그들에 대해 아무것도 모른 채 자식 노드를 읽으려면 :

$doc = new DOMDocument(); 
$rand = rand(1,100); 
$doc->loadXML('<root><i'.$rand.'><cannot-know-i /></i'.$rand.'></root>'); 
foreach($doc->documentElement->childNodes as $node) 
    print $node->nodeName; // i$rand 
+0

귀하의 생각을 고맙다 ... 우선 시도해 보겠습니다. :) – EdwardCPF

+0

+ 1 XML이 유효한지 확인하십시오! – 321X

1

Yes (예)를 할 수 있습니다, 예를 들어, 간단한 XML 사용 :

$xml = new SimpleXMLElement($fileName, NULL, true); 

foreach ($xml->children() as $child) 
{ 
    print child->getName(); 

    foreach ($child->attributes() as $attribute) 
    { 
     print $attribute.', '; 
    } 
} 
+0

답변 주셔서 감사합니다 :) 나는 그것을 먼저 시도 할 것입니다. – EdwardCPF

0

XML을 다른 형식으로 포맷하는 것이 좋습니다. 당신이 알고있는 형식으로. 다음과 같은 것 :

<?xml version="1.0" ?> 
    <Information> 
     <Disease target="heart" /> 
     <Cancer type="normal" /> 
    </Information> 
</xml> 

그러면 프로그래밍 언어 (귀하의 경우에는 PHP)에서 사용할 수있는 모든 구문 분석기를 사용할 수 있습니다.

관련 문제