2011-12-14 2 views
0

코드가 있습니다.XML과 PHP에서만 한 노드를 쿼리하는 방법은 무엇입니까?

$ query = '// 문서/상태 [. = "게시 됨"] ';
$ names = $ xpath-> query ($ query); // 일치하는 요소의 목록

결과 내가

<DocumentID>CI_INV000239562</DocumentID> 

을 표시하려면

<Document> 
    <Company>SEC</Company> 
    <Type description="Misc Customer Invoices">CINV</Type> 
    <DocumentID>CI_INV000239562</DocumentID> 
    <DocumentDescription>Invoice</DocumentDescription> 
    <Status>Posted</Status> 
    <Owner>42570935</Owner> 
    <Customer>42570935</Customer> 
    <Location>42570935</Location> 
    <Date>20111115</Date> 
    <DueDate>20111115</DueDate> 
    <OpenDate>20111115</OpenDate> 
    <RequiredDate>20111115</RequiredDate> 
    <TaxCode>AUS GST</TaxCode> 
    <TaxType>Incl</TaxType> 
    <TaxRate>10.00</TaxRate> 
    <CurrencyCode>AUD</CurrencyCode> 
    <SubTotal>115.00</SubTotal> 
    <TotalTax>11.50</TotalTax> 
    <Total>126.50</Total> 
    <AmountDue>126.50</AmountDue> 
    <AmountPaid>126.50</AmountPaid> 
</Document> 

어떻게해야합니까?

노드를 더 표시하려면? 예 : AmmountDue? ?

$ query = '// 문서/상태 [. = "게시 됨"] /../ DocumentID/AmmountDue ';

다른 방법을 사용해야합니까?

감사

답변

1

이 작업을 수행하는 몇 가지 방법, 여기에 예 중 하나가 있습니다 -

$query = '//Document/Status[. = "Posted"]/../DocumentID'; 
... 
$names = $xpath->query($query); 
foreach ($names as $name) 
{ 
    $node = $name->nodeValue; // string of "CI_INV000239562" 
} 

여러 노드 이름을 추구하려면 : -

// 문서/지위[. = [/../*] "게시"자기 :: DocumentID 또는 자기 :: AmountDue]

+0

쿨 .... 작동 감사합니다 :) –

+0

내가 예를 들어, 더 추가하려는 경우 AmmountDue ? $ query = '// 문서/상태 [. = "게시 됨"] /../ DocumentID/AmmountDue '; –

+0

방금 ​​예를 들어 답변을 업데이트했습니다. – ajreal

1
$query = '//Document/Status[. = "Posted"]/DocumentID'; 
+1

질투심 많고 +1이 아닙니다. – ajreal

관련 문제