【问题标题】:Parse strange XML in PHP在 PHP 中解析奇怪的 XML
【发布时间】:2016-05-30 14:51:38
【问题描述】:

我有一个 get 请求返回以下(奇怪的)XML 响应;

如何获取 <FL val=..> 的每个 val 作为键和 <FL></FL> 中的值作为值?

<?xml version="1.0" encoding="UTF-8" ?>
<response uri=" xml/JobOpenings/getRecords">
<result>
    <JobOpenings>
        <row no="1">
            <FL val="JOBOPENINGID">1001</FL>
            <FL val="Posting Title">
                <![CDATA[Controller]]>
            </FL>
            <FL val="Work Experience">
                <![CDATA[Medior]]>
            </FL>
            <FL val="Vacancy type">
                <![CDATA[Not Fixed]]>
            </FL>
            <FL val="Organisation">
                <![CDATA[Organisation B]]>
            </FL>
        </row>
        <row no="2">
            <FL val="JOBOPENINGID">1002</FL>
            <FL val="Posting Title">
                <![CDATA[Accounting & Reporting manager]]>
            </FL>
            <FL val="Job Opening Status">
                <![CDATA[In-progress]]>
            </FL>
            <FL val="Client Name">
                <![CDATA[MVRDO]]>
            </FL>
            <FL val="Work Experience">
                <![CDATA[Medior]]>
            </FL>
            <FL val="Rate">
                <![CDATA[0]]>
            </FL>
            <FL val="Vacancy type">
                <![CDATA[Fixed]]>
            </FL>
            <FL val="Specialisme">
                <![CDATA[Finance]]>
            </FL>
             <FL val="Organisation">
                <![CDATA[Organisation A]]>
            </FL>
        </row>
    </JobOpenings>
</result>
</response>

我想要的示例输出是一个数组

key=空缺类型,value=不固定

键 = 组织,值 = 组织 B

等等。

我知道我需要一个双 foreach,例如:

    $array=simplexml_load_string($xml);    
    foreach ($array->result->JobOpenings->row as $item){
         foreach($item->children() as $key => $value){

            echo '{$key} : {$value} </br>'; //But what to do here??
         }
    }

上面的代码给出了输出:

FL:未修复

FL : 组织 B

但我需要 FL 成为 &lt;FL val="This"&gt; 内的 val= 的值

【问题讨论】:

  • 在 json 转换后我丢失了 cmets (
  • json 转换不是必需的,我只是在我自己的示例中尝试过。随意失去转变

标签: php xml foreach


【解决方案1】:

此代码下降到您要求的值。可能,您想要更复杂的查找,但我无法从您的问题中理解这一点

$doc = simplexml_load_string($xml);

foreach ($doc->result->{0}->JobOpenings->{0}->row as $row)
    foreach($row as $item) {
        if(isset($item['val'])) echo $item['val'] .' ';
        echo $item . "\n"; 
    }

demo

【讨论】:

  • 感谢您的快速响应,但这不是我期望的响应。我需要的是遍历每一行和每一个 FL,我需要获取所有 FL 键和值并将它们保存在一个数组中
  • 看看这个demo 这很可能是我想要的,除了 FL 需要是你的例子中的 '$item['val'] 值
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多