php加载XML字符串
我有一个xsd字符串,需要获取标记status和标记itens/seloRecebimento中的内容,并将其像表格一样放置 我需要的是:php加载XML字符串,php,xml,soap,xsd,Php,Xml,Soap,Xsd,我有一个xsd字符串,需要获取标记status和标记itens/seloRecebimento中的内容,并将其像表格一样放置 我需要的是: $status = 0; // or 1 itens/seloRecebimento上的标签内容如下: 4 AAA034593 A1B2 4 AAA034594 A1B2 下面是xsd字符串: $string = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/
$status = 0; // or 1
itens/seloRecebimento上的标签内容如下:
$string = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<ns4:receberSelosResponse xmlns:ns2="http://www.w3.org/2000/09/xmldsig#" xmlns:ns3="http://www.tjce.jus.br/selodigital/schemas" xmlns:ns4="http://service.recebimento.selodigital.tjce.jus.br/">
<return>
<cabecalho>
<versao>1.12</versao>
<dataHora>2019-12-30T08:17:17.425-03:00</dataHora>
<ambiente>2</ambiente>
<serventia>
<codigoServentia>000309</codigoServentia>
</serventia>
</cabecalho>
<itens>
<itemSolicitacao>
<sequencial>1</sequencial>
<status>
<codigo>MSG037</codigo>
<status>0</status>
<mensagem>Item da solicitação já foi entregue para serventia.</mensagem>
</status>
<seloRecebimento>
<codigoSelo>
<codigo>4</codigo>
</codigoSelo>
<numeroSerie>AAA034593</numeroSerie>
<validador>A1B2</validador>
</seloRecebimento>
<seloRecebimento>
<codigoSelo>
<codigo>4</codigo>
</codigoSelo>
<numeroSerie>AAA034594</numeroSerie>
<validador>A1B2</validador>
</seloRecebimento>
</itemSolicitacao>
</itens>
</return>
</ns4:receberSelosResponse>
</soap:Body>
</soap:Envelope>';
结果是:
Array ( [0] => 1 MSG037 0 Item da solicitação já foi entregue para serventia. 4 AAA034593 A1B2 4 AAA034594 A1B2 )
目前,您正在转储所有
domeElement
内容。这段代码使用XPath来挑选所需的位并将它们放入数组中
每个XPath都从您使用的当前元素开始作为上下文,并使用后代::
确保它获取元素内的数据。还可以使用evaluate()
,因为这样可以返回字符串值
$domDocument = new DOMDocument();
$domDocument->loadXML($string);
$xp = new DOMXPath($domDocument);
$selos = array();
$selos_r = $domDocument->getElementsByTagName("itens");
foreach($selos_r as $selos_rs){
$status = $xp->evaluate('string(descendant::status/status)', $selos_rs);
foreach($selos_rs->getElementsByTagName("seloRecebimento") as $s) {
$codigo = $xp->evaluate('string(descendant::codigo)', $s);
$numeroSerie = $xp->evaluate('string(descendant::numeroSerie)', $s);
$validador = $xp->evaluate('string(descendant::validador)', $s);
$selos[] = [$status, $codigo, $numeroSerie, $validador];
}
}
print_r($selos);
$domDocument = new DOMDocument();
$domDocument->loadXML($string);
$xp = new DOMXPath($domDocument);
$selos = array();
$selos_r = $domDocument->getElementsByTagName("itens");
foreach($selos_r as $selos_rs){
$status = $xp->evaluate('string(descendant::status/status)', $selos_rs);
foreach($selos_rs->getElementsByTagName("seloRecebimento") as $s) {
$codigo = $xp->evaluate('string(descendant::codigo)', $s);
$numeroSerie = $xp->evaluate('string(descendant::numeroSerie)', $s);
$validador = $xp->evaluate('string(descendant::validador)', $s);
$selos[] = [$status, $codigo, $numeroSerie, $validador];
}
}
print_r($selos);