Как запросить один узел только в XML и PHP? - PullRequest
0 голосов
/ 14 декабря 2011

У меня есть код:

$ query = '// Document / Status [.= "Опубликовано"] ';
$ names = $ xpath-> query ($ query);// Список подходящих элементов

результат

<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>

Если я хочу отобразить

  <DocumentID>CI_INV000239562</DocumentID>

только

Что мне делать?

Если я хочу, чтобы отображалось больше узлов?например AmmountDue?

$ query = '// Document / Status [.= "Опубликовано"] /../ DocumentID / AmmountDue ';

Возможно ли это, или я должен использовать другой метод?

Спасибо

Ответы [ 2 ]

1 голос
/ 14 декабря 2011
$query = '//Document/Status[. = "Posted"]/DocumentID';
1 голос
/ 14 декабря 2011

Есть несколько способов сделать это, вот один из примеров: -

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

Для поиска имени нескольких узлов: -

// Document / Status[.= "Опубликовано"] /../* [self :: DocumentID или self :: AmountDue]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...