2011-08-08 2 views
2

특정 노드 집합의 nodeValue를 가져 오는 데 문제가 있습니다.노드와 같은 헤더를 찾는 XML이있는 PHP DOM

$sp = $doc->getElementsByTagName("SpecialParameter"); 
$directive = $sp->item(0)->nodeValue; 
$si = $doc->getElementsByTagName("SpecialInfo"); 
$id = $si->item(0)->nodeValue; 

두 객체를 반환하지만 개체 :

내가 할 필요가있는 무엇
<root> 
<SpecialParameter>Some Text</SpecialParameter> 
<SpecialInfo someNumber="123456789"></SpecialInfo> 
<book> 
    <title>Rusty Bedsprings</title> 
    <author>I. P. Knightly</author> 
</book> 
<book> 
    <title>Rush To The Out House</title> 
    <author>Willie Makeit</author> 
</book> 
</root> 

가 < SpecialParameter>와 < SpecialInfo의 수> 그래서 내가 가진 것은 이것이다 있습니다 : XML은 다음과 같습니다 비어 있습니다 ... 처음 두 노드에 액세스하는 비결은 무엇입니까? 또는 책 태그 안에 몇 가지 텍스트가있는 경우 isbn을 어떻게 내 보냅니 까?

감사합니다.

답변

3

XML이 잘못 작성되었습니다. <author>으로 시작하고 있지만 </title>으로 끝나고 있습니다. 고정 된 경우 $directive에 예상 값이 있습니다.

$id의 경우 $id = $si->item(0)->getAttribute('someNumber')을 원합니다.

0

위의 @Federico Lebrón이 남긴 주석에 추가하려면 이라는 속성이 있습니다.이 속성은 XML을 만드는 사람이 아닌 경우 사용할 수 있습니다. Federico가 지적했듯이 XML은 유효하지 않으므로 값을 얻지 못하는 것입니다. 그러나 recovertrue으로 설정하면됩니다.

예 : 물론

$doc = new DOMDocument; 
$doc->recover = true; 
$doc->load('path/to/file.xml'); 

는 가장 좋은 방법은 XML을 수정하는 것입니다.

+0

Francois와 Frederico, 답장을 보내 주셔서 감사합니다. 그러나 제 예제에는 명확하지 않으며 일부 오타가 있습니다. 내가 필요로하는 것은 SpecialParameters와 SpecialInfo이다. 나는 책 태그 안에있는 것들을 완벽하게 잘 만들 수있다. – ppetree