猿问

如何从 XML id 中获取值 - PHP

如果有人能帮助我解决这个问题,我将不胜感激。


我通过de code读取XML文件来获得这个XML:


$x = simplexml_load_file($link);

$g = $x->attributeGroup;

foreach($g->xpath("//PARAMETER") as $attr){

    var_dump((string)$attr->attributes()->ID);

    var_dump((string)$attr->attributes()->VALUE);

    var_dump((string)$attr); // for text value

}

我需要在ID=sitPag中获取VALUE,但我无法做到。


任何人都可以帮我这样做吗?


<consulta>

<PARAMETER>

<PARAM ID="CodEmp" VALUE="1234"/>

<PARAM ID="Pedido" VALUE="00010714"/>

<PARAM ID="Valor" VALUE="351,20"/>

<PARAM ID="tipPag" VALUE="02"/>

<PARAM ID="sitPag" VALUE="00"/>

<PARAM ID="ValorPago" VALUE="000000351,20"/>

<PARAM ID="dtPag" VALUE="15012020"/>

<PARAM ID="codAut" VALUE=""/>

<PARAM ID="numId" VALUE=""/>

<PARAM ID="compVend" VALUE=""/>

<PARAM ID="tipCart" VALUE=""/>

</PARAMETER>

</consulta>



慕标琳琳
浏览 145回答 3
3回答

素胚勾勒不出你

它可能不是最有效的(您必须遍历每个PARAM元素,直到找到所需的元素,这可能是很多),但这将完成工作。$x = simplexml_load_string($xmlString);foreach($x->PARAMETER->PARAM as $param){&nbsp; &nbsp; if((string)$param->attributes()->ID == "sitPag")&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; echo (string)$param->attributes()->VALUE;&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; }}

慕哥6287543

使用 Xpath 表达式获取节点或值。 返回一个 SimpleXMLElement 实例数组。SimpleXMLElement::xpath()$consulta = new SimpleXMLElement($xml);$params = $consulta->xpath('PARAMETER/PARAM[@ID="sitPag"]');$sitPag = isset($params[0]) ? (string)$params[0]['VALUE'] : '';var_dump($sitPag);在 DOM 中,您可以使用直接获取属性值:DOMXpath::evaluate()$document = new DOMDocument();$document->loadXML($xml);$xpath = new DOMXpath($document);$sitPag = $xpath->evaluate('string(/consulta/PARAMETER/PARAM[@ID="sitPag"]/@VALUE)');var_dump($sitPag);

小怪兽爱吃肉

在 DOM 中,您可以使用 DOMXpath::evaluate() 直接获取属性值:$document = new DOMDocument();$document->loadXML($xml);$xpath = new DOMXpath($document);$sitPag = $xpath->evaluate('string(/consulta/PARAMETER/PARAM[@ID="sitPag"]/@VALUE)');var_dump($sitPag);或$x = simplexml_load_string($xmlString);foreach($x->PARAMETER->PARAM as $param){&nbsp; &nbsp; if((string)$param->attributes()->ID == "sitPag")&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; echo (string)$param->attributes()->VALUE;&nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; }}
随时随地看视频慕课网APP
我要回答