Php 如果找到项,则打印父节点的属性

Php 如果找到项,则打印父节点的属性,php,xml,xpath,Php,Xml,Xpath,如果找到项,我想打印父节点属性。我正在使用XPath、PHP和XML。 我的代码是 if( ! $xml = simplexml_load_file($my_feed) ) { echo 'unable to load XML file'; } else { $nodes = $xml->xpath("//Stock/Assortment[contains(trans

如果找到项,我想打印父节点属性。我正在使用XPath、PHP和XML。 我的代码是

if( ! $xml = simplexml_load_file($my_feed) ) 
        { 
            echo 'unable to load XML file'; 
        } 
        else 
        { 
            $nodes = $xml->xpath("//Stock/Assortment[contains(translate(Item, 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЭЮЯ', 'абвгдеёжзиёклмнопрстуфхцчшщьыэюя'), '$search_phrase')]|/Stock/@City | /Stock/@CompanyName | /Stock/@Address | /Stock/@Date");
            foreach($nodes as $node)
            {
                if(strpos($node->Item,$search_phrase) !== false)
                {
                print $node->City.$node->CompanyName.$node->Address.$node->Date;
                }
                print $node->Item."\r\n".$node->Price."\r\n".$node->ValidDate."\r\n".$node->Manufacturer."\r\n"."<br/>";
            } 
        }
if(!$xml=simplexml\u加载文件($my\u提要))
{ 
echo“无法加载XML文件”;
} 
其他的
{ 
$nodes=$xml->xpath(//Stock/schomplement[包含(翻译(项目,'АБББГгггггЯгггггггггггггггггггггггггггггггг;
foreach($node作为$node)
{
if(strpos($node->Item,$search_短语)!==false)
{
打印$node->City.$node->CompanyName.$node->Address.$node->Date;
}
打印$node->Item。“\r\n”。$node->Price。“\r\n”。$node->ValidDate。“\r\n”。$node->制造商。“\r\n”。
”; } }
而且它没有打印父节点的属性,这是什么问题? 我的xml是:

<?xml version="1.0" encoding="utf-8"?>
<Stock City="Душанбе" CompanyName="Фирик и ко" Address="Ленина 2" Date="12.06.2014 06:22:58">
  <Assortment>
    <ID>1</ID>
    <Item>3В амп.  №3 ( Витамины В1+В6+В12 )</Item>
    <Quantity>8</Quantity>
    <Price>17.0000</Price>
    <ValidDate>01.01.1999</ValidDate>
    <Summ>136.0000</Summ>
    <Manufacturer>Заглушка</Manufacturer>
    <Supplier>Заглушка</Supplier>
  </Assortment>
</Stock>

1.
3В амп.  №3 ( Витамины В1+В6+В12 )
8.
17
01.01.1999
136
Заглушка
Заглушка

当您在xpath和foreach循环中检查搜索短语时,您可以从其中一个地方删除它-如果您认为它是错误的-我认为它是

另一个错误是将属性合并到元素中,如果希望使用一个独特且不复杂的方法来处理xpath结果,那么这就毫无意义了。所以我想说您做得不对,您可能应该在这里执行多个xpath查询(很可能,您应该这样做)

那么还有什么不对劲呢?那么代码的缩进肯定是错误的。如果你真的写了一段没有loveley的代码,那么你肯定会犯很多错误,因为你的代码不必要地难以阅读和解密

这真的是错误的,因为代码很难理解,我可能会给你错误的,你的代码有什么问题,这里是错误的,所以这样做肯定是错误的

然后实际上不检查xpath是否返回属性。所以你的问题确实有问题。你应该在问之前检查一下

除此之外,你的问题真正的错误在于你没有寻找错误信息。如果您已经这样做了,您就已经知道您的代码出了什么问题。我将针对包含如何获得更好错误消息信息的副本关闭它