2010-12-15 55 views
0

仍然非常PHP新... 我有一個大simplexmlstring,我想所有的lastnames從文件,並在他們的文章中:直接轉到的SimpleXMLElement而不使用XPath PHP

類似:

文章編號0作者位置0 '麪包車Tricht'
文章編號0作者位置1 '尼曼'
文章編號0作者位置2 '麪包車Tricht'
文章編號0作者位置3 '·布爾'
.....
文章編號1作者位置0 '麪包車Tricht'
文章編號1作者位置1 '尼曼'
文章編號1作者位置2 '麪包車Tricht'
文章編號1作者位置3 「·布爾」

我想直接去Author->LastName但沒有使用XPath,我嘗試了使用XPath,但後來我的foreach循環給陌生的輸出...這是我的嘗試:

<?php 
$i = 0; 
$j = 0; 
foreach ($xml->xpath('//AuthorList') as $AuthorList) { 
    $i ++; 
    $j = 0; 
    foreach ($xml->xpath('//Author') as $Author) { 
    $j ++; 
    echo $i . "articlenumber " . "author position" . $AuthorList->Author->LastName; 

     } 
} 
?> 

這是XML字符串:

SimpleXMLElement Object 
(
    [PubmedArticle] => Array 
     (
      [0] => SimpleXMLElement Object 
       (
        [MedlineCitation] => SimpleXMLElement Object 
         (
          [@attributes] => Array 
           (
            [Owner] => NLM 
            [Status] => In-Process 
           ) 

          [PMID] => 20538400 
          [DateCreated] => SimpleXMLElement Object 
           (
            [Year] => 2010 
            [Month] => 07 
            [Day] => 08 
           ) 

          [Article] => SimpleXMLElement Object 
           (
            [@attributes] => Array 
             (
              [PubModel] => Print-Electronic 
             ) 

            [Journal] => SimpleXMLElement Object 
             (
              [ISSN] => 1090-2147 
              [JournalIssue] => SimpleXMLElement Object 
               (
                [@attributes] => Array 
                 (
                  [CitedMedium] => Internet 
                 ) 

                [Volume] => 73 
                [Issue] => 3 
                [PubDate] => SimpleXMLElement Object 
                 (
                  [Year] => 2010 
                  [Month] => Aug 
                 ) 

               ) 

              [Title] => Brain and cognition 
              [ISOAbbreviation] => Brain Cogn 
             ) 

            [ArticleTitle] => Increased saccadic rate during smooth pursuit eye movements in patients at Ultra High Risk for developing a psychosis. 
            [Pagination] => SimpleXMLElement Object 
             (
              [MedlinePgn] => 215-21 
             ) 

            [Abstract] => SimpleXMLElement Object 
             (
              [AbstractText] => Abnormalities in eye tracking are consistently observed in schizophrenia patients and their relatives and have been proposed as an endophenotype of the disease. The aim of this study was to investigate the performance of patients at Ultra High Risk (UHR) for developing psychosis on a task of smooth pursuit eye movement (SPEM). Forty-six UHR patients and twenty-eight age and education matched controls were assessed with a task of SPEM and psychiatric questionnaires. Our results showed that both the corrective and non-corrective saccadic rates during pursuit were higher in the UHR group. There were however no differences in smooth pursuit gain between the two groups. The saccadic rate was related to positive UHR symptoms. Our findings indicate that abnormalities in SPEM are already present in UHR patients, prior to a first psychotic episode. These abnormalities occur only in the saccadic system. 
              [CopyrightInformation] => 2010 Elsevier Inc. All rights reserved. 
             ) 

            [Affiliation] => Department of Psychiatry, Academic Medical Center, University of Amsterdam, The Netherlands. [email protected] 
            [AuthorList] => SimpleXMLElement Object 
             (
              [@attributes] => Array 
               (
                [CompleteYN] => Y 
               ) 

              [Author] => Array 
               (
                [0] => SimpleXMLElement Object 
                 (
                  [@attributes] => Array 
                   (
                    [ValidYN] => Y 
                   ) 

                  [LastName] => van Tricht 
                  [ForeName] => M J 
                  [Initials] => MJ 
                 ) 

                [1] => SimpleXMLElement Object 
                 (
                  [@attributes] => Array 
                   (
                    [ValidYN] => Y 
                   ) 

                  [LastName] => Nieman 
                  [ForeName] => D H 
                  [Initials] => DH 
                 ) 

                [2] => SimpleXMLElement Object 
                 (
                  [@attributes] => Array 
                   (
                    [ValidYN] => Y 
                   ) 

                  [LastName] => Bour 
                  [ForeName] => L J 
                  [Initials] => LJ 
                 ) 

                [3] => SimpleXMLElement Object 
                 (
                  [@attributes] => Array 
                   (
                    [ValidYN] => Y 
                   ) 

                  [LastName] => Boerée 
                  [ForeName] => T 
                  [Initials] => T 
                 ) 

                [4] => SimpleXMLElement Object 
                 (
                  [@attributes] => Array 
                   (
                    [ValidYN] => Y 
                   ) 

                  [LastName] => Koelman 
                  [ForeName] => J H T M 
                  [Initials] => JH 
                 ) 

                [5] => SimpleXMLElement Object 
                 (
                  [@attributes] => Array 
                   (
                    [ValidYN] => Y 
                   ) 

                  [LastName] => de Haan 
                  [ForeName] => L 
                  [Initials] => L 
                 ) 

                [6] => SimpleXMLElement Object 
                 (
                  [@attributes] => Array 
                   (
                    [ValidYN] => Y 
                   ) 

                  [LastName] => Linszen 
                  [ForeName] => D H 
                  [Initials] => DH 
                 ) 

               ) 

             ) 

            [Language] => eng 

等............

+0

這個問題似乎沒有任何XML/XPath。 – 2010-12-15 16:12:54

回答

0

爲了得到所需的輸出,你的循環應該是這樣的:

$i = 0; 
foreach ($xml->xpath('//AuthorList') as $AuthorList) { 
    $j = 0; 
    foreach ($AuthorList->Author as $Author) { 
     echo join(' ', array('article number', $i, 'author position', $j, $Author->LastName)); 
     $j++; 
    } 
    $i++; 
}