1

属性xsi:schemaLocationのコンテンツを取得したいと思います。これは、php の getElementsByTagName (およびその後の foreach) で完全に機能しますが、醜いですよね?

単純な Xpath クエリで同じコンテンツを取得する方法は?

xml コンテンツの短い例を次に示します。

<?xml version="1.0" encoding="utf-8"?>
<gpx xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" version="1.0" creator="blabla" xsi:schemaLocation="http://www.topografix.com/GPX/1/0 http://www.topografix.com/GPX/1/0/gpx.xsd http://www.groundspeak.com/cache/1/0/1 http://www.groundspeak.com/cache/1/0/1/cache.xsd" xmlns="http://www.topografix.com/GPX/1/0">
...
</gpx>

ありがとう!

4

2 に答える 2

3

通常、使用する名前空間を最初に XPath ライブラリに登録する必要があります。次に、名前とともに名前空間プレフィックスを含めることで、属性をクエリできます。

DOMXPath を使用していると仮定すると、次の名前空間を登録できます。

$xpath = new DOMXPath($doc);
$xpath->registerNamespace("xsi","http://www.w3.org/2001/XMLSchema-instance");
$xpath->registerNamespace("gpx", "http://www.topografix.com/GPX/1/0");

次に、次のような方法で schemaLocation 属性をクエリできます。

$xpath->query("/gpx:gpx/@xsi:schemaLocation",$doc);
于 2013-05-06T22:05:51.770 に答える