• 1 رای - 2 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از XML در PHP
#1
به کمک فوری احتیاج دارم .

یه فایل xml دارم با ساختار زیر
<title id="index">
...
...
...

</title>


می خوام داخل فایل دنبال title ای بگردم که id اون index هست بعد تمام محتوای بین اون تگ رو چه از تگ ها و چه محتوا بردارم و داخل یک متغییر بریزم .

اگه میشه یک نفر کامل این مورد رو توضیح بده

انشاالله خدا ازتون قبول کنه Rolleyes
  پاسخ
تشکر شده توسط :
#2
این فایل xml
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="ISO-8859-1"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note> 

کد پی‌اچ‌پی:
<?php
$xml 
simplexml_load_file("test.xml");

echo 
$xml->getName() . "<br />";

foreach(
$xml->children() as $child)
  {
  echo 
$child->getName() . ": " $child "<br />";
  }
?>
کد پی‌اچ‌پی:
Output:
note
to
Tove
from
Jani
heading
Reminder
body
Don't forget me this weekend! 

http://www.w3schools.com/PHP/php_xml_simplexml.asp
  پاسخ
تشکر شده توسط : Alimokhlesi
#3
دستت درد نکنه .


ولی این اونی که من می خواستم نیست

من یه فایل xml با ساختار زیر دارم

کد پی‌اچ‌پی:
<?xml version="1.0" encoding="ISO-8859-1"?>
<template>
    <page id="index">
        <body>    
            <div id="c_header">index</div>
            <div id="c_content">this is page index.</div>
        </body>
    </page>
</template> 

حالا می خوام تگ page ای که id اون index هست رو پیدا کنم و محتویات تگ body درون اون رو به طور کامل چه از متن و چه از تگ ها بخونم و داخل یک متغییر قرار بدم .
  پاسخ
تشکر شده توسط :
#4
خوب ببینید. من فایل xml تون رو یه مقدار تغییر دادم:
کد پی‌اچ‌پی:
<?xml version="1.0" encoding="ISO-8859-1"?>
<template>
    <page id="index">
        <body>    
            <div id="c_header" class="header1">index_headers</div>
            <div id="c_content" class="content1">this is page index.</div>
        </body>
    </page>
      <page id="index1">
        <body>    
            <div id="c_header1">index1</div>
            <div id="c_content1">this is page index1.</div>
        </body>
    </page>
 
</template> 
اینم قسمت خوندن از فایل xml:
کد پی‌اچ‌پی:
<?php
$xml 
simplexml_load_file("test.xml");

foreach(
$xml->children() as $child)
{
    
$tagPageAttr=$child->attributes();
    
$str="";
    if( 
$tagPageAttr["id"]=="index")
    {
        
//get children of body
        
foreach ($child->body->children() as $childs){
            
$str .="< ";
            
//get attributes
            
foreach ($childs->attributes() as $a=>$b)
            {
                
$str .=" ".$a."= '";
                
$str .=$b ;
                
$str .="' ";
            }
            
$str .='/>';
            
$str .=$childs->attributes();
            
$str .="< /".$childs->getName()."><br>";
            }
            echo 
"string is $str<br>";
    }    
}
?>

توضیح:
خوب ما با دستور زیر میایم فرزندان گره template رو پیدا می کنیم:

کد پی‌اچ‌پی:
foreach($xml->children() as $child

حالا میایم صفات گره رو می خونیم و اونی رو که id اون index هست، پیدا میکنیم :
کد پی‌اچ‌پی:
$tagPageAttr=$child->attributes();
    if( 
$tagPageAttr["id"]=="index"

فرزندان تگ body رو میگیریم:
کد پی‌اچ‌پی:
foreach ($child->body->children() as $childs){ 
بعد خود گره و صفاتش رو هم بدست میاریم:
کد پی‌اچ‌پی:
foreach ($childs->attributes()) 
در دور اول foreach:
کد پی‌اچ‌پی:
foreach ($childs->attributes() as $a=>$b)
        {      
                echo 
"a is $a <br>";
                
$str .=" ".$a."= '";//a is id and class
                
$str .=$b ;//b is c_header when a is id and b is header1 when a is class
                
$str .="' ";
    }     
            
$str .='/>';
            
$str .=$childs->attributes();//index_headers
            
$str .="< /".$childs->getName()."><br>"
در دور بعد هم مقادیر تگ بعدی خونده میشه...

این رو در حالت کلی در نظر گرفتم...حالا اگه ساختار فایلتون از این سادتر هست میتونید از تعداد foreach ها کم کنید
  پاسخ
تشکر شده توسط : php oia Y.P.Y


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان