如何在xml和php中只查询一个节点?

发布于 2024-12-21 06:28:28 字数 1188 浏览 1 评论 0原文

我有一个代码:

$query = '//文档/状态[. =“已发布”]';
$names = $xpath->query($query); // 一个 匹配元素列表

匹配元素结果

<前><代码><文档> <公司>SEC <类型描述=“其他客户发票”>CINV <文档ID>CI_INV000239562发票<状态>已发布 <所有者>42570935 <客户>42570935 <位置>42570935 <日期>20111115 <截止日期>20111115 <开放日期>2011111520111115<税码>澳大利亚 GST <税种>包括 <税率>10.00 <货币代码>AUD <小计>115.00 <总税额>11.50 <总计>126.50 <应付金额>126.50 <支付金额>126.50

如果我想显示

 <文档ID>CI_INV000239562

只是

我该怎么办?

如果我想显示更多节点? 例如 AmmountDue ?

$query = '//文档/状态[. =“已发布”]/../DocumentID/AmmountDue';

这是可能的还是我必须使用另一种方法?

谢谢

I have a code :

$query = '//Document/Status[. = "Posted"]';
$names = $xpath->query($query); // A
list of matched elements

result

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

If I want to display

  <DocumentID>CI_INV000239562</DocumentID>

only

What should I do ?

If I want more node to be displayed ?
for example AmmountDue ?

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

Is this possible or I must use another method ?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

做个少女永远怀春 2024-12-28 06:28:28
$query = '//Document/Status[. = "Posted"]/DocumentID';
$query = '//Document/Status[. = "Posted"]/DocumentID';
初心未许 2024-12-28 06:28:28

有几种方法可以做到这一点,这是示例之一:-

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

寻找多个节点名称:-

//文档/状态[. = "已发布"]/../*[self::DocumentID 或 self::AmountDue]

There are few ways to do this, here is one of the example :-

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

To seek for multiple node name :-

//Document/Status[. = "Posted"]/../*[self::DocumentID or self::AmountDue]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文