我有像这样的XML结构
<companies>
<company>
<vatno>12345678</vatno>
<name>
<founded>2013-12-31</founded>
<text>XYZ Inc</text>
</name>
<location>
<streetname>West Road</streetname>
<county>
<no>12345</no>
<text>East County</text>
<county>
</location>
</company>
</companies>
我正在尝试从元素中获取特定信息到PHP变量。
获得&#34; vatno&#34;我用:
$vatno = $xmlObject->item($i)->getElementsByTagName('vatno')->item(0)->childNodes->item(0)->nodeValue;
但是如果我需要县名呢?
我不能使用getElementsByTagName(&#39; text&#39;),因为它也会使用元素名称&#34; text&#34;来获取公司名称。
答案 0 :(得分:1)
您可能最好使用SimpleXML,然后您可以以更直观的方式访问各种组件。 上面的例子就像......
stdout:0 -1
stderr:0 -1
syslog:0 -1
因此,使用sys.log
访问每个子元素。
如果你想坚持你已有的东西,你应该能够使用......
$data = <<< XML
<companies>
<company>
<vatno>12345678</vatno>
<name>
<founded>2013-12-31</founded>
<text>XYZ Inc</text>
</name>
<location>
<streetname>West Road</streetname>
<county>
<no>12345</no>
<text>East County</text>
</county>
</location>
</company>
</companies>
XML;
$xml = simplexml_load_string($data);
foreach ( $xml->company as $company ) {
echo $company->vatno.PHP_EOL;
echo $company->location->county->text.PHP_EOL;
}
使用->
将获取$countyName = $xmlObject->item($i)->getElementsByTagName('text')->item(1)
->nodeValue;
元素的第二个实例,因此这假定该名称也具有此值。
答案 1 :(得分:0)
如果我使用
,它适用于SimpleXML$xml = simplexml_load_string($data);
foreach ( $xml->companies->company as $company ) {
echo $company->vatno.PHP_EOL;
echo $company->location->county->text.PHP_EOL;
}