Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将XML解析为php?_Php_Codeigniter_Xml Parsing - Fatal编程技术网

如何将XML解析为php?

如何将XML解析为php?,php,codeigniter,xml-parsing,Php,Codeigniter,Xml Parsing,如何将其转换为php输出 <?xml version="1.0" encoding="iso-8859-1"?> <employee> <name>Mark</name> <age>27</age> <salary>$5000</salary> </employee> <

如何将其转换为php输出

<?xml version="1.0" encoding="iso-8859-1"?>    
    <employee>
          <name>Mark</name>
          <age>27</age>
          <salary>$5000</salary>
          </employee>
          <employee>
          <name>Jack</name>
          <age>25</age>
          <salary>$4000</salary>
          </employee>
          <employee>
          <name>nav</name>
          <age>25</age>
          <salary>$4000</salary>
    </employee>

做记号
27
$5000
杰克
25
$4000
导航
25
$4000

我不太明白你的问题,但是如果你想用php解析xml,你可以使用xml扩展:


然后,您将能够根据自己的喜好打印数据

您可以看到以下讨论:您可以在那里找到答案:

如果您正在寻找CodeIgniter中的解决方案。这两个链接可能会有所帮助


  • 认为您的XML缺少根条目,因此解析将继续。但是,撇开这个问题不谈,可以查找simplexml\u load\u文件和simplexml\u load\u字符串。这些是以PHP风格的结构访问XML的最简单方法

    在您的XML示例中,我插入了一个通用的“records”条目。例如:

    $t = <<< EOF
    <?xml version="1.0" encoding="iso-8859-1"?>    
    <records>
        <employee>
              <name>Mark</name>
              <age>27</age>
              <salary>$5000</salary>
        </employee>
        <employee>
              <name>Jack</name>
              <age>25</age>
              <salary>$4000</salary>
        </employee>
        <employee>
              <name>nav</name>
              <age>25</age>
              <salary>$4000</salary>
        </employee>
    </records>
    EOF;
    
    $x = @simplexml_load_string( $t );
    
    print_r( $x );
    

    @pp19dd表示缺少根节点,当前xml处于有效状态

    <?xml version="1.0" encoding="iso-8859-1"?>
    
        <document>
            <employee>
                <name>Mark</name>
                <age>27</age>
                <salary>$5000</salary>
            </employee>
            <employee>
                <name>Jack</name>
                <age>25</age>
                <salary>$4000</salary>
            </employee>
            <employee>
                <name>nav</name>
                <age>25</age>
                <salary>$4000</salary>
            </employee>
        </document>
    
    输出到视图(列表/表格)

    
    
    getElementsByTagName(“员工”);
    foreach($employees作为$employees)
    {
    $names=$employee->getElementsByTagName(“名称”);
    $name=$name->item(0)->nodeValue;
    $ages=$employee->getElementsByTagName(“年龄”);
    $age=$ages->item(0)->nodeValue;
    $salaries=$employee->getElementsByTagName(“salary”);
    $salary=$salaries->item(0)->nodeValue;
    回显“$name-$age-$salary\n
    ”; } ?>
    //这辆车是这样开的 马克-27-$5000 杰克-25-4000美元
    nav-25-$4000

    表示我是如何在php中获得xml文件输出的?您可以使用DomDocument创建和解析xml标记-27-$5000 Jack-25-$4000 nav-25-$4000,我需要获得类似此GetElementsByTagname(“员工”)的输出;foreach($employees as$employee){$names=$employee->getElementsByTagName(“名称”);$name=$names->item(0)->nodeValue;$ages=$employee->getElementsByTagName(“工资”);$salary=$salary->getElementsByTagName->item(0)->nodeValue;echo“$name-$age-$salary\n
    ”;}?>Mark-27-$5000 Jack-25-$4000 nav-25-$4000我需要这样的输出它可以工作,但我需要这样的输出;Mark-27-$5000 Jack-25-$4000 nav-25-$4000 nav-4000你只需要用你的格式回复:
    foreach($x[雇员]作为$employee){echo$employee['name'.-'.$employee['age']'.-'.$employe['salary'].';}
    如何为此xml的输出提供CSS???;getElementsByTagName(“员工”);foreach($employees as$employee){$names=$employee->getElementsByTagName(“名称”);$name=$names->item(0)->nodeValue;$ages=$employee->getElementsByTagName(“年龄”);$age=$ages->item(0)->nodeValue;$salaries=$employee->getElementsByTagName(“salary”);$salary=$salary->item(0)->nodeValue;echo“$name-$age-$salary\n
    ”;}?>getElementsByTagName(“employee”);foreach($employees as$employee){$names=$employee->getElementsByTagName(“name”);$name=$names->item(0)->nodeValue;$ages=$employee->getElementsByTagName(“年龄”);$age=$ages->item(0)->nodeValue;$salaries=$employee->getElementsByTagName(“工资”);$salary=$salary->item(0)->nodeValue;echo“$name-$age-$salary\n
    ”;}>
    <?xml version="1.0" encoding="iso-8859-1"?>
    
        <document>
            <employee>
                <name>Mark</name>
                <age>27</age>
                <salary>$5000</salary>
            </employee>
            <employee>
                <name>Jack</name>
                <age>25</age>
                <salary>$4000</salary>
            </employee>
            <employee>
                <name>nav</name>
                <age>25</age>
                <salary>$4000</salary>
            </employee>
        </document>
    
    $dom = new DOMDocument();
    
    $dom->load('data.xml');
    
    $employees = $dom->getElementsByTagName('employee');
    
    foreach($employees as $employee)
    {
        $names = $employee->getElementsByTagName( "name" );
        $name  = $names->item(0)->nodeValue;
    
        $ages = $employee->getElementsByTagName( "age" );
        $age  = $ages->item(0)->nodeValue;
    
        $salaries = $employee->getElementsByTagName( "salary" );
        $salary  = $salaries->item(0)->nodeValue;
    
        $tmp[] = array(
            'name'  =>  $name,
            'age'  =>  $age,
            'salary'  =>  $salary
        );
        continue;
    }
    
    <table>
    <tbody>
        <?php foreach($tmp as $staff):?>
        <tr>
            <td><?php echo $staff['name'];?></td>
            <td><?php echo $staff['age'];?></td>
            <td style="color:red;"><?php echo $staff['salary'];?></td>
        </tr>
        <?php endforeach;?>
    </tbody>
    </table>
    
    <?php
    $doc = new DOMDocument();
    $doc->load( 'test1.xml' );//xml file loading here
    
    $employees = $doc->getElementsByTagName( "employee" );
    foreach( $employees as $employee )
    {
      $names = $employee->getElementsByTagName( "name" );
      $name = $names->item(0)->nodeValue;
    
      $ages= $employee->getElementsByTagName( "age" );
      $age= $ages->item(0)->nodeValue;
    
      $salaries = $employee->getElementsByTagName( "salary" );
      $salary = $salaries->item(0)->nodeValue;
    
      echo "<b>$name - $age - $salary\n</b><br>";
      }
    ?>