نمایش نتایج 1 تا 2 از 2

نام تاپیک: xml parse

  1. #1
    کاربر دائمی
    تاریخ عضویت
    آذر 1386
    محل زندگی
    سحابي #C ستاره ي Java
    پست
    192

    xml parse

    سلام به دوستان عزيز.
    من براي Parse كردن اين فايل xml به مشكل برخوردم. اگه ممكنه منو تو parse كردن اين فايل راهنمايي كنيد.

    <?xml version="1.0" encoding="ISO-8859-1"?>



    <Config>
    <ConnectionString>
    <Server>
    <Name>servername</Name>
    <IP>172.16.20.21</IP>
    </Server>
    </ConnectionString>
    <Grants>
    <Grant ID=0>
    <UID>admin</UID>
    <PWD>2fac4j930ljgcas9312fsdf0</PWD>
    </Grant>
    <Grant ID=1>
    <UID>reviewer</UID>
    <PWD>2fac4j930ljgcas9312fsdf3</PWD>
    </Grant>
    <Grant ID=2>
    <UID>member</UID>
    <PWD>2fac4j930ljgcas9312fsdfs</PWD>
    </Grant>
    <Grant ID=3>
    <UID>user</UID>
    <PWD>2fac4j930ljgcas9312fsdfa</PWD>
    </Grant>
    </Grants>
    </Config>


    البته من براي parse اين فايل يك كلاس نوشتم اما نمي دونم چرا كلاسم درست كار نمي كنه من كد كلاسي كه براي parse اين فايل نوشتم رو هم ضميمه كردم.اگر ممكن است منو تو رفع اين اشكال راهنمايي كنيد.
    کلاسی که برای parse نوشتم:
    <?php


    include_once('Hash.php');
    class XMLHandler
    {
    private $CurrentGrantID;
    private $ParserHandler;
    private $HashHandler;
    private $Current;
    private $XMLPath;
    public $ErrorNumber;
    public $Server;
    public $Grant;
    /*
    $ErrorNumber=0 XML file has a valid format
    $ErrorNumber=1 XML file is in invalid format
    */
    public function __construct($XMLPath="config.xml")
    {
    $this->ParserHandler=xml_parser_create();
    $this->HashHandler=new hash_encryption("M!Y!M");
    $this->XMLPath=$XMLPath;
    }
    private function StartElement($Parser,$ElementName,$ElementAttribut e)
    {
    if($ElementName=="CONNECTIONSTRING")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="SERVER")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="NAME")
    {
    $this->ErrorNumber=0;
    $this->Current[0]="NAME";
    }
    else if($ElementName=="IP")
    {
    $this->ErrorNumber=0;
    $this->Current[0]="IP";
    }
    else if($ElementName=="GRANTS")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="GRANT")
    {
    if(is_array($ElementAttribute))
    {
    $this->ErrorNumber=0;
    $this->CurrentGrantID=$ElementAttribute['ID'];
    $this->Grant[$this->CurrentGrantID]["UID"]="";
    $this->Grant[$this->CurrentGrantID]["PWD"]="";
    }
    else
    $this->ErrorNumber=1;
    }
    else if($ElementName=="UID")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="PWD")
    {
    $this->ErrorNumber=0;
    }
    else
    {
    $this->ErrorNumber=1;
    return;
    }
    }
    private function EndElement($Parser,$ElementName)
    {
    if($ElementName=="CONNECTIONSTRING")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="SERVER")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="NAME")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="IP")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="GRANTS")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="GRANT")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="UID")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="PWD")
    {
    $this->ErrorNumber=0;
    }
    else
    {
    $this->ErrorNumber=1;
    return;
    }
    }
    private function ElementValue($Parser,$Data)
    {
    if($this->Current=="NAME")
    {
    $this->ErrorNumber=0;
    }
    else if($ElementName=="IP")
    {
    $this->ErrorNumber=0;
    }
    else if($this->Current=="UID")
    {
    $this->ErrorNumber=0;
    $this->Grant[$this->CurrentGrantID]["UID"]=$this->HashHandler->decrypt($Data);
    }
    else
    {
    $this->Grant[$this->CurrentGrantID]["PWD"]=$this->HashHandler->decrypt($Data);
    $this->ErrorNumber=0;
    }
    }
    private function SetElementHandler()
    {
    //xml_set_element_handler($this->ParserHandler,"StartElement","EndElement");
    xml_set_element_handler($this->ParserHandler,$this->StartElement,$this->EndElement);
    }
    private function SetCharacterDataHandler()
    {
    xml_set_character_data_handler($this->ParserHandler,$this->ElementValue);
    //xml_set_character_data_handler($this->ParserHandler,"ElementValue");
    }
    public function Parse()
    {
    $this->SetElementHandler();
    $this->SetCharacterDataHandler();
    $FileHandler=fopen($this->XMLPath,"r");
    while ($Data=fread($FileHandler,4096))
    {
    try
    {
    xml_parse($this->ParserHandler,$Data,feof($FileHandler));
    }
    catch(Exception $e)
    {
    sprintf("XML Error: %s at line %d",xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser));
    }
    }
    }
    }
    ?>



    کد برنامه ای که برای نمایش اطلاعات استفاده می کنم:
    <?php


    include('Hash.php');
    include('XMLHandler.php');
    $Instance=new XMLHandler();
    $Instance->Parse();
    echo 'Server Name:'.$Instance->Server["Name"].'<br />';
    echo 'Server IP:'.$Instance->Server["IP"].'<br />';
    echo 'Server Grant 0: User=>'.$Instance->Grant[0]["UID"].'&nbsp&nbspPass=>'.$Instance->Grant[0]["PWD"].'<br />';
    echo 'Server Grant 1: User=>'.$Instance->Grant[1]["UID"].'&nbsp&nbspPass=>'.$Instance->Grant[1]["PWD"].'<br />';
    echo 'Server Grant 2: User=>'.$Instance->Grant[2]["UID"].'&nbsp&nbspPass=>'.$Instance->Grant[2]["PWD"].'<br />';
    echo 'Server Grant 3: User=>'.$Instance->Grant[3]["UID"].'&nbsp&nbspPass=>'.$Instance->Grant[3]["PWD"].'<br />';
    ?>


    سؤال دومم هم اينه كه اگه من بخوام از كلاس DOMDocument براي Parse كردن اين فايل استفاده كنم، شيوه ي كار چه طوريه؟


  2. #2
    کاربر دائمی
    تاریخ عضویت
    آذر 1386
    محل زندگی
    سحابي #C ستاره ي Java
    پست
    192

    نقل قول: xml parse

    دوباره سلام. من ساختار فایل XML خودمو درست کردم. اما همچنان با طراحی کلاسم مشکل دارم.
    اگه من همین برنامه و متد ها رو تو خارج از کلاسم بذارم همه چی درسته اما تو کلاس متدهای callback ای که برای StartElement و EndElement و ElementValue استفاده می شن به درستی کار نمی کنن. من کد رو دوباره قرار می دم.خواهشن کمکم کنید.
    فایل های ضمیمه فایل های ضمیمه

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •