我有一个以下格式的XML文档:
<CONFIGURATION>
<ADMIN REFERRER="BCTRD" REQUIRE_AGREEMENTS="true" ALLOW_UPGRADES="true" />
<LAYOUT HIDE_PRESELECTED_SERVICES="true" AGREEMENTS_PER_EXCHANGE="true"></LAYOUT>
<SERVICE ID="TRE" CODE="TRADER_EMINI" OPTIONAL_BROKER="true">
<EXCHANGE GROUP="FOO"/>
</SERVICE>
<SERVICE ID="TR" CODE="TRADER">
<DEFAULT/>
<EXCHANGE GROUP="BAR"/>
</SERVICE>
</CONFIGURATION>
我目前正在使用此代码块来检索默认服务的服务代码:
$serviceList = $this->xpaths->query('config',"//SERVICE");
foreach ($serviceList as $service) {
if ($service->getElementsByTagName('DEFAULT')->length) {
$serviceCode = $service->attributes->getNamedItem('CODE')->nodeValue;
break;
}
}
我怀疑可以用一两行 XPath 来做到这一点,但我无法弄清楚如何做到这一点。您将如何格式化 XPath 查询以检索我想要的服务代码?
您可以使用以下 XPath 语句直接获取 'CODE' 属性的值
//SERVICE[DEFAULT]/@CODE
这基本上是'给我任何具有默认子元素的 SERVICE 元素的属性代码。
希望这有帮助。
另一个 xpath:
//SERVICE/DEFAULT/../@CODE
看到它的工作原理:http://codepad.viper-7.com/CCzCn0