php loadXML 字符串

我有一个 xsd 字符串,我需要获取标签状态和标签 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/">

<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>';

慕工程0101907
浏览 157回答 1
1回答

MMTTMM

目前,您只是在倾倒所有DOMElement内容。此代码使用 XPath 挑选出您想要的位并将它们放入一个数组中。每个 XPath 从作为上下文使用的当前元素开始,并用于descendant::确保它获取元素内的数据。也使用evaluate()as this 可以返回字符串值...$domDocument = new DOMDocument();$domDocument->loadXML($string);$xp = new DOMXPath($domDocument);$selos = array();$selos_r = $domDocument->getElementsByTagName("itens");foreach($selos_r as $selos_rs){&nbsp; &nbsp; $status = $xp->evaluate('string(descendant::status/status)', $selos_rs);&nbsp; &nbsp; foreach($selos_rs->getElementsByTagName("seloRecebimento") as $s)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; $codigo = $xp->evaluate('string(descendant::codigo)', $s);&nbsp; &nbsp; &nbsp; &nbsp; $numeroSerie = $xp->evaluate('string(descendant::numeroSerie)', $s);&nbsp; &nbsp; &nbsp; &nbsp; $validador = $xp->evaluate('string(descendant::validador)', $s);&nbsp; &nbsp; &nbsp; &nbsp; $selos[] = [$status, $codigo, $numeroSerie, $validador];&nbsp; &nbsp; }}print_r($selos);
打开App,查看更多内容
随时随地看视频慕课网APP