2012-03-26 40 views
9

इसे php आउटपुट में कैसे परिवर्तित करें?PHP को 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> 
+0

का मतलब है कि मुझे php में xml फ़ाइल आउटपुट कैसे मिला? –

+0

आप xml http://php.net/manual/en/class.domdocument.php – Philip

+0

मार्क - 27 - $ 5000 जैक - 25 - $ 4000 एनएवी - 25 - $ 4000, मुझे प्राप्त करने की आवश्यकता है आउटपुट –

उत्तर

18
<?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>"; 
    } 
?> 

// बाहर इस मार्क - 27 की तरह डालें - $ 5000 जैक - 25 - $ 4000 एनएवी - 25 - $ 4000

3

मैं वास्तव में अपने प्रश्न नहीं मिलता है, लेकिन च आप php का उपयोग कर xml पार्स करने के लिए चाहते हैं, आप एक्सएमएल एक्सटेंशन का उपयोग कर सकते हैं: http://php.net/manual/en/book.xml.php

फिर आप के लिए डेटा बाहर मुद्रित करने के लिए सक्षम हो जाएगा अपने पसंद

+0

मार्क जोड़ लिया है - 27 - $ 5000 जैक - 25 - $ 4000 एनएवी - 25 - $ 4000 मैं इस –

3

आपको इस चर्चा को देख सकते हैं: आप जवाब पा सकते हैं:

Best XML Parser for PHP

और अगर आप कर रहे हैं CodeIgniter में समाधान की तलाश में। लिंक के इन जोड़ी मदद कर सकता है

  1. Parsing XML files using CodeIgniter?
  2. http://blog.insicdesigns.com/2009/03/parsing-xml-file-using-codeigniters-simplexml-library/
+0

लोड ('test1.xml'); $ कर्मचारी = $ डॉक्टर-> getElementsByTagName ("कर्मचारी"); foreach ($ कर्मचारी $ कर्मचारी के रूप में) { $ नाम = $ कर्मचारी-> getElementsByTagName ("name"); $ नाम = $ नाम-> आइटम (0) -> नोड वैल्यू; $ आयु = $ कर्मचारी-> getElementsByTagName ("आयु"); $ आयु = $ आयु-> आइटम (0) -> नोड वैल्यू; $ वेतन = $ कर्मचारी-> getElementsByTagName ("वेतन"); $ वेतन = $ वेतन-> आइटम (0) -> नोड वैल्यू; गूंज "$ नाम - $ आयु - $ वेतन \ n
"; } ?> –

3

सोचो अपने XML एक रूट प्रविष्टि की कमी है, इसलिए, पार्स छड़ी होगी। हालांकि, उस मुद्दे को अलग, लुकअप simplexml_load_file और simplexml_load_string। PHP-शैली संरचना में XML तक पहुंचने के सबसे सरल तरीके हैं।

आपके एक्सएमएल नमूने में, मैंने एक सामान्य 'रिकॉर्ड' प्रविष्टि डाली है। उदाहरण के लिए:

$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); 

समारोह warning-दबा दिया जाता है के बाद से आप शायद सत्यापन चेतावनी नहीं करना चाहती। किसी भी तरह, इस बिंदु पर, पार्स एक्सएमएल इस तरह दिखेगा:

SimpleXMLElement Object 
(
    [employee] => Array 
     (
      [0] => SimpleXMLElement Object 
       (
        [name] => Mark 
        [age] => 27 
        [salary] => $5000 
       ) 
      [1] => SimpleXMLElement Object 
       (
        [name] => Jack 
        [age] => 25 
        [salary] => $4000 
       ) 
      [2] => SimpleXMLElement Object 
       (
        [name] => nav 
        [age] => 25 
        [salary] => $4000 
       ) 
     ) 
) 
+0

यह काम कर रहा है लेकिन मुझे आउटपुट की आवश्यकता है; मार्क - 27 - $ 5000 जैक - 25 - $ 4000 एनएवी - 25 - $ 4000 –

+0

आपको बस अपनी फॉर्मेटिंग के साथ गूंजना होगा: 'foreach ($ x [कर्मचारी] $ नियोक्ता के रूप में) {echo $ employe [' name ']।' - '। $ नियोक्ता ['आयु']। '-'। $ नियोजित ['वेतन']। '';} ' – grifos

+0

इस एक्सएमएल के आउटपुट में सीएसएस कैसे दें ?? ?? php $ doc = new DOMDocument(); $ डॉक्टर-> लोड ('test1.xml'); $ कर्मचारी = $ डॉक्टर-> getElementsByTagName ("कर्मचारी"); foreach ($ कर्मचारी $ कर्मचारी के रूप में) { $ नाम = $ कर्मचारी-> getElementsByTagName ("name"); $ नाम = $ नाम-> आइटम (0) -> नोड वैल्यू; $ आयु = $ कर्मचारी-> getElementsByTagName ("आयु"); $ आयु = $ आयु-> आइटम (0) -> नोड वैल्यू; $ वेतन = $ कर्मचारी-> getElementsByTagName ("वेतन"); $ वेतन = $ वेतन-> आइटम (0) -> नोड वैल्यू; गूंज "$ नाम - $ आयु - $ वेतन \ n
"; } ?> –

0

@ pp19dd अपने एक रूट नोड लापता कहते हैं, अपने वर्तमान एक्सएमएल में मान्य है। (सूची/तालिका) DOMDocument साथ

<?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> 
संबंधित मुद्दे