複数のノードをフェッチするためにXpathを使用できます。
- は、二つの別の場所パス/式
/Address/FirstLine|/Address/SecondLine
- 任意のアドレスの子要素ノードをフェッチ
/Address/*
- を組み合わせた文字列を取得し、任意のアドレスの子要素ノードを取得し、それらに
/Address/*[self::FirstLine or self::SecondLine]
をフィルタリング組み合わせSimpleXMLではなくDOMに直接アクセスすることはできません。 SimpleXMLElement::xpath()
は、ノードの配列(SimpleXMLElementオブジェクトで表される)だけを返すことができます。 DOMXpath::evaluate()
はスカラーを返すことができます。
$xml = '<Address>
<FirstLine>Indiabulls Finance Centre Tower</FirstLine>
<SecondLine>Elphinstone Road</SecondLine>
</Address>';
$document = new DOMDocument();
$document->loadXml($xml);
$xpath = new DOMXpath($document);
$result = $xpath->evaluate("concat(/Address/FirstLine, '\n', /Address/SecondLine)");
var_dump($result);
出力:
string(48) "Indiabulls Finance Centre Tower
Elphinstone Road"
出典
2017-03-03 09:24:18
ThW
私は$ XML->文字列に参加しようとしたように( "// CDT:アドレス/ *"、 "「);しかし、エラーjoin()を示しています:無効な引数が渡されました – hrishi
いいえ、 '$ xml-> xpath( 'string-join(// Address/*、")'); ' – Andersson
SimpleXMLElement :: xpath():xmlXPathCompOpEval :関数string-concatが見つかりません – hrishi