【发布时间】:2014-06-21 21:05:29
【问题描述】:
如果该节点的内容与另一个节点(兄弟)匹配,我正在尝试显示该节点的文本内容。这是 XML:
<MemberId>
<BillingInfo>
<Details>
<Line NUMBER="0">
<ChargeDate>20140605</ChargeDate>
<DueDate>20140605</DueDate>
<TrackingNumber>PR DED</TrackingNumber>
<Description>Account payroll deduction</Description>
<RevCode>SJ1550</RevCode>
<RevDesc>ACCOUNT PAYROLL DEDUCTION</RevDesc>
<SalesAmount>-11.77</SalesAmount>
<ServiceCharge>0.00</ServiceCharge>
<GST>0.00</GST>
<PST>0.00</PST>
<Othertaxes>0.00</Othertaxes>
<Total>-11.77</Total>
<ChitCode>PR DED</ChitCode>
<ChitDate>20140605</ChitDate>
</Line>
<Line NUMBER="1">
<ChargeDate>20140605</ChargeDate>
<DueDate>20140605</DueDate>
<TrackingNumber>03128862</TrackingNumber>
<Description>Mountain Mkt Sales</Description>
<RevCode>SJ1553</RevCode>
<RevDesc>MOUNTAIN MKT SALES</RevDesc>
<SalesAmount>8.99</SalesAmount>
<ServiceCharge>0.00</ServiceCharge>
<GST>0.00</GST>
<PST>0.61</PST>
<Othertaxes>0.00</Othertaxes>
<Total>9.60</Total>
<ChitCode>03128862</ChitCode>
<ChitDate>20140605</ChitDate>
</Line>
</Details>
</BillingInfo>
<Chits>
<Chit>
<Code>03128862</Code>
<Body><![CDATA[
Member#: 0ECHER
Name: *******
Area: *********
Server: JEANNEANE
Chit#: 03128862
Date: June 5 2014
------- ------- ------- ------- -------
1 MINGUA BEEF JER 8.99
------- ------- ------- ------- -------
Sub-Total 8.99
TAX 0.61
------- ------- ------- ------- -------
Chit Total 9.60
MEMBER CHARGE -9.60
]]></Body>
</Chit>
</Chits>
</MemberId>
我成功地显示了每个 ChitCode 和 ChitDate,因为它们位于 Line[@number] 节点中。我想显示包含文本“Chit#: XXXXXX”的 Body 节点,其中 xxxxxx 匹配 Line->ChitCode。这是我的 php,它显示了正文,但它显示了所有行项目的第一个正文:
<?php
foreach($Chitquery as $Chit)
{
foreach($Linequery as $Line)
{
echo "<label class='collapse' for='".$Line->ChitCode."-".$Line->ChitDate."'>".$Line->Description."</label>
<input id='".$Line->ChitCode."-".$Line->ChitDate."' type='checkbox'>
<div>";
// Creates hide - show link for each Description item
// Start getting the matching Chit Code from Chit/Body
if ($Chit->Code = $Line->ChitCode)
{
echo $Chit->Body."</div>";
}
else
{
echo " ".$Line->ChitCode."</div>";
} // End If
} //End foreach Linequery
} // End foreach Chitquery
?>
这是回声 $Chit->Body。"";我需要帮助,我想显示包含 $Line->ChitCode 值的 Body。
哦,是的,由于“foreach”语句的放置不当,这些行重复得很奇怪! 帮助!提前致谢!
更新:我已经更改了我的 php 代码,现在我可以使用隐藏显示 div,没有重复,但我得到的是 'array' 而不是 $ChitBody。我无法弄清楚如何在 $ChitBody = $member->xpath('Chits/Chit/Body[text()="'.$Line->ChitCode.'" 中找到包含 $Line->ChitCode 的 Body 节点] ');
<?php
foreach($Linequery as $Line) {
$ChitCode = $member->Chits->Chit->Code;
$ChitBody = $member->xpath('Chits/Chit/Body[text()="'.$Line->ChitCode.'"] ');
echo "<label class='collapse' for='".$Line->ChitCode."-".$Line->ChitDate."'>".$Line->Description."</label>
<input id='".$Line->ChitCode."-".$Line->ChitDate."' type='checkbox'>"; // Creates hide - show link for each Description item
// Start getting the matching Chit Code from Chit/Body
if ($ChitCode = $Line->ChitCode) {
echo "<div>Code: ".$ChitCode."<br>".$ChitBody."</div>";
} else {
echo "<div>".$Line->ChitCode."</div>";
} // End If
} //End foreachLinequery
?>
【问题讨论】:
-
if 语句中有 $Chit->Code = $Line->ChitCode。尝试将其更改为 $Chit->Code == $Line->ChitCode.