Php 如果找到项,则打印父节点的属性
如果找到项,我想打印父节点属性。我正在使用XPath、PHP和XML。 我的代码是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
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是否返回属性。所以你的问题确实有问题。你应该在问之前检查一下
除此之外,你的问题真正的错误在于你没有寻找错误信息。如果您已经这样做了,您就已经知道您的代码出了什么问题。我将针对包含如何获得更好错误消息信息的副本关闭它