简体   繁体   English

如何获取带有属性名称的xml标记

[英]How to get a xml tag with attribute name

I am trying to get the value (number 21.48) from the field "NMONTHLYINSTALMENT" with PHP simple_xml. 我正在尝试使用PHP simple_xml从字段“ NMONTHLYINSTALMENT”中获取值(数字21.48)。

This is my PHP code and XML: 这是我的PHP代码和XML:

$xml->data->struct("var[@name='NMONTHLYINSTALMENT']")->number

<wddxPacket version='1.0'><header/>
    <data>
      <struct>
        <var name='UWEBSHOPID'><string>6FF1633B-6AE0-4AB6-A19E-D934B7DF783F</string></var>
        <var name='NMONTHLYINSTALMENT'><number>21.48</number></var>
        <var name='CCOMMAND'><string>GetMonthlyInstalment</string></var>
        <var name='NDURATION'><string>48</string></var>
        <var name='NPRICE'><string>825.89</string></var>
        <var name='COUTPUTTYPE'><string>XML</string></var>
      </struct>
    </data>
</wddxPacket>

I can not get it to work! 我无法正常工作! Any help is much appriciated! 任何帮助都非常有用! Thanks! 谢谢!

DEMO DEMO

You can use following; 您可以使用以下内容;

<?php

$xml_str = <<< EOT
<wddxPacket version='1.0'><header/>
    <data>
      <struct>
        <var name='UWEBSHOPID'><string>6FF1633B-6AE0-4AB6-A19E-D934B7DF783F</string></var>
        <var name='NMONTHLYINSTALMENT'><number>21.48</number></var>
        <var name='CCOMMAND'><string>GetMonthlyInstalment</string></var>
        <var name='NDURATION'><string>48</string></var>
        <var name='NPRICE'><string>825.89</string></var>
        <var name='COUTPUTTYPE'><string>XML</string></var>
      </struct>
    </data>
</wddxPacket>
EOT;

$xml = simplexml_load_string($xml_str);
$result = $xml->xpath('//data/struct/var[@name="NMONTHLYINSTALMENT"]/number');

echo $result[0][0];

use DomDocument and xml path 使用DomDocument和xml路径

$doc = new DomDocument;
$doc->Load("xmlfileName.xml");
$xpath = new DOMXPath($doc);
$path=$xpath->query("//data/struct/var[@name="NMONTHLYINSTALMENT"]/number")->item(0);
$doc->saveXML();

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM