我使用XML通过PHP将产品插入到我的数据库中。我可以使用以下代码访问/读取xml提要:
$xml=simplexml_load_file('testfeed.xml') or die("Error: Cannot create object");
foreach($xml->children() as $product) {
$pname = $product->name;
$pdescr = $product->description;
echo $pname;
echo $pdescr;
}
以下是我的示例XML:
<product ID="9">
<name>Product X</name>
<properties>
<property name="categoryPath">
<value>path-to-category</value>
</property>
<property name="stock">
<value>1</value>
</property>
</properties>
</product>
很容易获取name的值,但是如何获取categorypath的值,因为这个值位于properties-&gt; property-&gt; value中并在<property name="categoryPath">
中声明?
谢谢!
答案 0 :(得分:2)
没有在结构中循环过多的最简单方法是使用XPath:
$values = $xml->xpath('//property[@name="categoryPath"]/value');
只需遍历返回的数组,并在需要时将每个结果转换为字符串,然后就完成了。
答案 1 :(得分:0)
更新:
虽然Jossif的答案非常擅长批量获取所有节点,但我还是在不使用xpath
的情况下编辑了更新的xml结构:
$property = $product->properties->property;
$propertyAttribute = $property->attributes()->{'name'};
$catPath = ($propertyAttribute=="categoryPath")? $property->value : "value for missing paths";
print $catPath . PHP_EOL;
由于您似乎没有任何其他类似的xml节点,因此您不需要使用该属性来分隔它们。
你应该可以安全地使用这个
$catPath = $product->properties->property->value;
print $catPath;
从value
节点获取字符串。
答案 2 :(得分:0)
$xml=simplexml_load_file('./testfeed.xml') or die("Error: Cannot create object");
foreach($xml->children() as $product) {
$pname = $product->name;
$pdescr = $product->properties->property["name"];
$pdvalue = (string)$product->properties->property->value;
echo "Prdo Name: $pname\n";
echo "Prod Desc: $pdescr\n";
echo "Prod Value: $pdvalue\n";
}
输出:
Prdo Name: Product X
Prod Desc: categoryPath
Prod Value: path-to-category