我有问题,我希望从我的xml文件中获取许多标签名称中的所有数据。 但是当我循环时,只需在第一个标签中获得一个。我的英语。
这是我的代码和示例格式xml。
代码:
$xml = @simplexml_load_file('C://xampp/htdocs/logxml.xml');
foreach ($xml->children() as $b){
echo $MakeAndModel = $b->{'xdm:ComponentGroup'}->{'xdm:Component'}->{'dd:DigitalStorageTypeEnum'};
}
<xdm:ComponentGroup>
<xdm:Component id="dev1300" componentType="digitalStorage">
<dd:DigitalStorageTypeEnum>harddisk</dd:DigitalStorageTypeEnum>
<dd:Capacity>
<dd:MaxCapacity>16</dd:MaxCapacity>
<dd:Unit>bytes</dd:Unit>
</dd:Capacity>
</xdm:Component>
</xdm:ComponentGroup>
<xdm:Component id="dev1350" componentType="digitalStorage">
<dd:DigitalStorageTypeEnum>ram</dd:DigitalStorageTypeEnum>
<dd:Capacity>
<dd:MaxCapacity>1040187392</dd:MaxCapacity>
<dd:Unit>bytes</dd:Unit>
</dd:Capacity>
</xdm:Component>
输出=硬盘,没有其他人
以及我的真实xml文件下面仍然有许多相同的标签名称,我想获得该值。但它不起作用。任何人都可以帮忙。
答案 0 :(得分:0)
这里的错误:
Intent i = new Intent(OldActivity.this, NewActivity.class);
// clear all activities from back stack
i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(i);
你必须把它放在xml的底部
</xdm:ComponentGroup> (element close)
答案 1 :(得分:0)
存在一些问题,主要的问题是使用@
隐藏了隐藏它可能加载XML文件的任何问题。我已经更正了文件,现在就是......
<?xml version="1.0" encoding="UTF-8"?>
<xdm:ComponentGroup xmlns:xdm="http://www.hp.com/schemas/imaging/con/xdm/1.1/"
xmlns:dd="http://www.hp.com/schemas/imaging/con/dictionaries/1.0/">
<xdm:Component id="dev1300" componentType="digitalStorage">
<dd:DigitalStorageTypeEnum>harddisk</dd:DigitalStorageTypeEnum>
<dd:Capacity>
<dd:MaxCapacity>16</dd:MaxCapacity>
<dd:Unit>bytes</dd:Unit>
</dd:Capacity>
</xdm:Component>
<xdm:Component id="dev1350" componentType="digitalStorage">
<dd:DigitalStorageTypeEnum>ram</dd:DigitalStorageTypeEnum>
<dd:Capacity>
<dd:MaxCapacity>1040187392</dd:MaxCapacity>
<dd:Unit>bytes</dd:Unit>
</dd:Capacity>
</xdm:Component>
</xdm:ComponentGroup>
我为命名空间添加了一些虚拟网址,但您可以使用合法的网址。
然后,使用XPath获取各种组件,您可以加载文件并使用...
输出 <?php
error_reporting ( E_ALL );
ini_set ( 'display_errors', 1 );
$xml = simplexml_load_file('NewFile.xml');
$xml->registerXPathNamespace("xdm", "http://www.hp.com/schemas/imaging/con/xdm/1.1/");
$xml->registerXPathNamespace("dd", "http://www.hp.com/schemas/imaging/con/dictionaries/1.0/");
$components = $xml->xpath("//xdm:Component");
foreach ($components as $component){
$digitalStorageTypeEnum = $component->xpath("descendant::dd:DigitalStorageTypeEnum/text()")[0];
echo $component['id']."-". $digitalStorageTypeEnum.PHP_EOL;
}
这会在命名空间中注册它们在XPath表达式中引用它们。因此,它首先查找所有<xdm:Component>
元素,然后在其中获取dd:DigitalStorageTypeEnum
元素。虽然text()
只是一段文字,xpath
总是会返回一个数组,所以只需将第一个结果作为内容。
输出:
dev1300-harddisk
dev1350-ram