好的,所以我有这个xml:
<resin xmlns="http://caucho.com/ns/resin" xmlns:resin="urn:java:com.caucho.resin">
<cluster>
<host host-name="www.1.com">
<host-alias>1.com</host-alias>
<root-directory>c:/docroot</root-directory>
<web-app id="/" document-directory="."/>
</host>
<host host-name="www.2.com">
<host-alias>2.com</host-alias>
<root-directory>c:/docroot</root-directory>
<web-app id="/" document-directory="."/>
</host>
</cluster>
</resin>
我如何获得(在php中)主机名“www.1.com”的xpath 如果我用这个:
$items = $xpath->query(sprintf('//host[@host-name="%s"]', $hostNameToLookFor));
没有
xmlns="http://caucho.com/ns/resin" xmlns:resin="urn:java:com.caucho.resin"
它有效
请帮助,它让我疯狂! 谢谢!答案 0 :(得分:0)
$data = <<<xml
<resin xmlns="http://caucho.com/ns/resin" xmlns:resin="urn:java:com.caucho.resin">
<cluster>
<host host-name="www.1.com">
<host-alias>1.com</host-alias>
<root-directory>c:/docroot</root-directory>
<web-app id="/" document-directory="."/>
</host>
<host host-name="www.2.com">
<host-alias>2.com</host-alias>
<root-directory>c:/docroot</root-directory>
<web-app id="/" document-directory="."/>
</host>
</cluster>
</resin>
xml;
$xml = new SimpleXMLElement($data);
$xml->registerXPathNamespace('ns', 'http://caucho.com/ns/resin');
$xml->registerXPathNamespace('resin', 'urn:java:com.caucho.resin');
foreach ($xml->xpath ('//ns:host[@host-name="www.2.com"]') as $v)
{
// ...
}