【问题标题】:Php code to extract xml file data to mySQL将xml文件数据提取到mySQL的php代码
【发布时间】:2013-06-26 07:52:57
【问题描述】:

我有 XML 文件。我需要将它从 XMl 转换为 MYSQL。 .现在我的问题是如何提取这两个数组

每个数组会有不同的

    <r> $value </r>

$数据的值..例如
第一个数组,
pmIntervalTxEthMaxUtilization 数据:34,2 和

对于第二个数组
pmIntervalRxPowerLevel 数据:-9,70 ,
pmIntervalTxPowerLevel 数据:13,1

。有人可以帮助指导如何编写 php 代码来将此 xml 文件提取到我的 SQL 中

    <mi>
        <mts>20130618020000</mts>
        <gp>900</gp>
        <mt>pmIntervalRxUndersizedFrames</mt>  [ this is 1st array]
            <mt>pmIntervalTxEthMaxUtilization</mt>
        <mv>
            <moid>port:1:3:23-24</moid>
            <sf>FALSE</sf>
            <r>0</r>    [the data for 1st array i want to insert in DB]
            <r>34</r>
        </mv>
                     <mv>
            <moid>port:1:3:23-24</moid>
            <sf>FALSE</sf>
            <r>0</r>    [the data for 1st array i want to insert in DB]
            <r>2</r>
        </mv>
    </mi>
    <mi>
        <mts>20130618020000</mts>            
        <gp>900</gp>
         <mt>pmIntervalRxSES</mt>            [this is 2nd array]
        <mt>pmIntervalRxPowerLevel</mt>
        <mt>pmIntervalTxPowerLevel</mt>
        <mv>
            <moid>client:1:3:23-24</moid>
            <sf>FALSE</sf>
            <r>0</r>   [the data for 2nd array i want to insert in DB]
            <r>-9</r>
            <r>13</r>
        </mv>
                     <mv>
            <moid>client:1:3:23-24</moid>
            <sf>FALSE</sf>
            <r>0</r>   [the data for 2nd array i want to insert in DB]
            <r>70</r>
            <r>1</r>
        </mv>
    </mi>

【问题讨论】:

  • 这个问题似乎是题外话,因为它是关于可能(或可能不)包含问题询问的代码的较大块非隔离代码的调试请求。相反,应该将代码简化为以简洁和自我解释的方式概述问题和问题的最低限度的示例代码。

标签: php mysql xml


【解决方案1】:

你的问题对我来说不是很清楚,你的意思是像嵌套循环:

foreach($xml->mi as $mi){
    // This deep we loop through each <mi> value
    foreach($mi->mv as $subchild){
    // Now we loop through each <mv> of the <mi> from the outer loop
    // code here
    }
}

【讨论】:

  • 谢谢.. 但是不同的循环(我这里有两个不同的循环)会有不同的数据..
【解决方案2】:

你需要一个嵌套循环:

foreach($xml->mi as $mi)
{
    foreach($mi->mv as $subchild)
    {
        ...
        insert row
        ...
    }
}

这将循环遍历每个 &lt;mi&gt; 节点,然后循环遍历它包含的每个 &lt;mv&gt;

【讨论】:

  • ok..tq 提供帮助,但不同的循环(我这里有两个不同的循环)会有不同的数据。
【解决方案3】:

这是当我们有两个具有不同数据内容的数组时的代码

$i = 0 ;
foreach($xml->md->mi as $mi)    
        { 
            foreach($mi->mv as $subchild)
            {   
                if ($i <2 )
                { 
                  //function code for 1st array
                    $i++;
                }   

                else
                {
                     //function code for 2nd array
                    $i++;
                }
            }
        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多