我试图通过下面的PHP代码通过下面的XML读取“ SIM”的值,但是由于某种原因,它给了我一个空白的“ DOMNodeList”。我在这里做错了吗?我想将该元素设置为

<ns1:SIM old="8902"> 000000 </SIM>


我该怎么做,因为我正在尝试使用下面的代码来查找它,但似乎输出为“ DOMNodeList”为空。

$xpath = new DOMXPath($doc);
$xpath->registerNamespace('ns1', 'http://www.example.com/WSG/ec/');
$result = $xpath->query("/ns1:ModifySIMRequest/ns1:ServiceProfile/ns1:Primary/ns1:SIM");
        foreach ($result AS $node) {
            var_dump($node);
            echo $node->nodeValue;
        }


$ doc中的XML是

<?xml version="1.0"?>
<ns1:ModifySIMRequest xmlns:ns1="http://www.example.com/WSG/ec/">
  <ns1:ServiceProfile>
    <ns1:Speech>
      <ns1:MSN>33808089</ns1:MSN>
      <ns1:AccountNumber>8989895</ns1:AccountNumber>
    </ns1:Speech>
    <ns1:Primary action="mod">
      <ns1:BillingOption>dsdsd</ns1:BillingOption>
      <ns1:SIM old="8902"/>
    </ns1:Primary>
  </ns1:ServiceProfile>
</ns1:ModifySIMRequest>

最佳答案

获取属性

        echo $node->getAttribute('old');  // 8902


设定值

        $node->nodeValue = '000000';
        echo $doc->saveXML(); // <ns1:SIM old="8902">000000</ns1:SIM>

关于php - 通过Xpath读取XML的空白“DOMNodeList”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47320885/

10-09 19:16