Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在单个PHP XPath中读取两个子节点_Php_Xml_Xpath - Fatal编程技术网

在单个PHP XPath中读取两个子节点

在单个PHP XPath中读取两个子节点,php,xml,xpath,Php,Xml,Xpath,我正在使用PHP XPath读取XML数据。我可以在单个Xpath中读取以下两行地址吗 <Address> <FirstLine>Indiabulls Finance Centre Tower</FirstLine> <SecondLine>Elphinstone Road</SecondLine> </Address> 只需使用通配符*匹配地址的任何子级: 你也可以试试 string-join(//Address/*,

我正在使用PHP XPath读取XML数据。我可以在单个Xpath中读取以下两行地址吗

<Address>
<FirstLine>Indiabulls Finance Centre Tower</FirstLine>
<SecondLine>Elphinstone Road</SecondLine>
</Address>
只需使用通配符*匹配地址的任何子级:

你也可以试试

string-join(//Address/*, " ")

要将这两个值作为单字符串Indiabulls Finance Center Tower Elphinstone Road获取,可以使用Xpath获取多个节点

组合两个备选位置路径/表达式 /地址/第一行|/地址/第二行 获取任意地址子元素节点 /地址/* 获取任意地址子元素节点并筛选它们 /地址/*[self::FirstLine或self::SecondLine] 对于SimpleXML,直接获取组合字符串是不可能的,但在DOM中是不可能的。SimpleXMLElement::xpath只能返回由SimpleXMLElement对象表示的节点数组。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);

我尝试了$xml->string join//cdt:Address/*;但它显示了错误连接:无效参数passedNo,我的意思是$xml->xpath'string-join//Address/*,';SimpleXMLElement::xpath:xmlXPathCompOpEval:未找到函数字符串concat我认为PHP xpath不支持字符串concat可能。。。第一个选项$xml->xpath'//Address/*';怎么样;?
string-join(//Address/*, " ")
$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"