0
형제 노드에 필드 [@ value = 'SIM 식별 (ICCID)] 필드가있을 때 필드 [@value] . 여러 xml 워드 프로세서와이 작업을 수행해야하며 부모 노드가 항상 동일한 배열 위치에 있지 않으므로 상대 경로를 사용해야합니다.속성을 기반으로 노드를 선택한 다음 PHP에서 형제 노드 속성을 반환합니다.
다음은 xml 문서의 예입니다. 여기
<views>
<view name="Summary">
<item>
<field name="Subject" value="Date Created" class=""/>
<field name="Data" value="6/24/2013 11:06:54 AM" class=""/>
</item>
<view name="Case Data">
<item>
<field name="Subject" value="Case Reference" class=""/>
</item>
<view name="General Information">
<item>
<field name="Attribute" value="Device Name" class=""/>
<field name="Data" value="SIM Card" class=""/>
</item>
<item>
<field name="Attribute" value="SIM Identification (ICCID)" class=""/>
<field name="Data" value="8935301120426207248" class=""/>
</item>
</view>
</views>
은 지금까지 마련했지만 확실히이 일을 얻을 수없는 것입니다.
$doc = new DOMDocument;
$doc->load('../SIMxml/207248.xml');
$xpath = new DOMXPath($doc);
$SIM_num_query = "/views/view[@name='General Information']/item [field[@name='Attribute' and @value='SIM Identification (ICCID)' and preceding-sibling::field[@value]]]/";
echo $xpath->query($SIM_num_query),"<br/>";
이 작동하지 않는, 어떤 제안?
나는에 문제가 오전 이, xpath 쿼리의 유효성을 검사하기 위해 그것을 어떻게 반향시킬 수 있습니까? 코드에서'$ SIM_query = "// field [@ value = 'SIM Identification (ICCID)']/following-sibling :: field";'를 넣지 만'echo $ xpath-> query ($ SIM_query); 'Catchable 치명적인 오류가 발생합니다 : DOMNodeList 클래스의 객체를 문자열로 변환 할 수 없습니다. – Jim
@Jim : 쿼리의 반환 값은 [DOMNodeList]입니다. (http://php.net/manual/en/class.domnodelist .php). 가장 좋은 방법은'foreach ($ nl as $ node) {echo $ node-> nodeValue, "br />"; \t}'그러나'echo $ nl-> item (0) -> nodeValue;도 사용됩니다. –
고맙습니다.'-> nodeValue'는 제가 누락 된 것입니다. 도와 주셔서 감사합니다. – Jim