2014-07-09 4 views
1
<ITEMS> 
<ITEM ItemID="XY"> 
<ItemSearchName /> 
<ITEMDESCRIPTION> 
     <DESCRIPTION descriptionType="T" descriptionTypeTitle="Short" languageId="1" language="English">English description</DESCRIPTION> 
     <DESCRIPTION descriptionType="T" descriptionTypeTitle="Short" languageId="2" language="France">Fance description</DESCRIPTION> 
</ITEMDESCRIPTION> 
<ItemType>B</ItemType> 
<ItemDepartment /> 
<ITEMDIMENSIONS> 
     <ItemDimensionUOM>m</ItemDimensionUOM> 
</ITEMDIMENSIONS> 
<ItemGrossWeihgt>0.00</ItemGrossWeihgt> 
</ITEM> 
</ITEMS> 

이것은 simplexml 메서드로 파싱 된 XML 파일의 예입니다. 이 코드 (단지 예)과 항목 ID 속성 값을 읽어 수행 방법 설명 아래 설명에 액세스 할 수 있습니다속성을 기반으로 XML 값 파싱

$item->attributes()->ItemID 

내 질문의 LanguageID = 1 속성?

foreach ($item->ITEMDESCRIPTION->DESCRIPTION as $desc) { 
       if ($desc['languageId'] == '1') { 
        echo "<td>" . $desc . "</td>"; 
       } 
} 

을하지만 난 foreach 문을 사용하지 선호 :

나는 foreach는이 작업을 수행 할 수 있습니다.

또 다른 가능성은 이것이다 :

$desc2 = $item->ITEMDESCRIPTION->DESCRIPTION[1]; 

을하지만, 이것은 단지 첫 번째 설명 및 제안의 LanguageID = 1

감사 속성을하지 설명입니다!

답변

0

xpath을 사용하여 특정 값을 얻을 수도 있습니다. 예 :

$xml_string = '<ITEMS> <ITEM ItemID="XY"> <ItemSearchName /> <ITEMDESCRIPTION> <DESCRIPTION descriptionType="T" descriptionTypeTitle="Short" languageId="1" language="English">English description</DESCRIPTION> <DESCRIPTION descriptionType="T" descriptionTypeTitle="Short" languageId="2" language="France">Fance description</DESCRIPTION> </ITEMDESCRIPTION> <ItemType>B</ItemType> <ItemDepartment /> <ITEMDIMENSIONS> <ItemDimensionUOM>m</ItemDimensionUOM> </ITEMDIMENSIONS> <ItemGrossWeihgt>0.00</ItemGrossWeihgt> </ITEM></ITEMS>'; 
$xml = simplexml_load_string($xml_string); 
$value = $xml->xpath('//ITEMDESCRIPTION/DESCRIPTION[@languageId="1"]')[0]; 
echo (string) $value; // English description 

또는 단순한의 foreach :

foreach($xml->ITEM->ITEMDESCRIPTION->DESCRIPTION as $desc) { 
    if($desc->attributes()['languageId'] == 1) { 
     echo (string) $desc; // English description 
    } 
} 
+0

'$ 값 = $ XML->의 XPath ('ITEMDESCRIPTION/DESCRIPTION [@의 LanguageID = "1"]); echo $ value [0]; echo $ value [1]; ' ... 작업을 수행했습니다. 도와 줘서 고맙다! – Iztok

+0

확실한 @ 이츠 톡 문제 없음 – user1978142