2013-11-11 2 views
0

У меня есть этот XML:получить данные XML по значению atributte

<eSummaryResult> 
    <DocSum> 
     <Id>11482001</Id> 
     <Item Name="PubDate" Type="Date">2001 Jun</Item> 
     <Item Name="EPubDate" Type="Date" /> 
     <Item Name="Source" Type="String">Adverse Drug React Toxicol Rev</Item> 
     <Item Name="AuthorList" Type="List"> 
      <Item Name="Author" Type="String">Mantle D</Item> 
      <Item Name="Author" Type="String">Gok MA</Item> 
      <Item Name="Author" Type="String">Lennard TW</Item> 
     </Item> 
     <Item Name="LastAuthor" Type="String">Lennard TW</Item> 
     <Item Name="Title" Type="String">Adverse and beneficial effects of plant extracts on skin and skin disorders.</Item> 
     <Item Name="Volume" Type="String">20</Item> 
     <Item Name="Issue" Type="String">2</Item> 
     <Item Name="Pages" Type="String">89-103</Item> 
     <Item Name="LangList" Type="List"> 
      <Item Name="Lang" Type="String">English</Item> 
     </Item> 
     <Item Name="NlmUniqueID" Type="String">9109474</Item> 
     <Item Name="ISSN" Type="String">0964-198X</Item> 
     <Item Name="ESSN" Type="String" /> 
     <Item Name="PubTypeList" Type="List"> 
      <Item Name="PubType" Type="String">Journal Article</Item> 
      <Item Name="PubType" Type="String">Review</Item> 
     </Item> 
     <Item Name="RecordStatus" Type="String">PubMed - indexed for MEDLINE</Item> 
     <Item Name="PubStatus" Type="String">ppublish</Item> 
     <Item Name="ArticleIds" Type="List"> 
      <Item Name="pubmed" Type="String">11482001</Item> 
      <Item Name="eid" Type="String">11482001</Item> 
      <Item Name="rid" Type="String">11482001</Item> 
     </Item> 
     <Item Name="History" Type="List"> 
      <Item Name="pubmed" Type="Date">2001/08/03 10:00</Item> 
      <Item Name="medline" Type="Date">2002/01/23 10:01</Item> 
      <Item Name="entrez" Type="Date">2001/08/03 10:00</Item> 
     </Item> 
     <Item Name="References" Type="List" /> 
     <Item Name="HasAbstract" Type="Integer">1</Item> 
     <Item Name="PmcRefCount" Type="Integer">3</Item> 
     <Item Name="FullJournalName" Type="String">Adverse drug reactions and toxicological reviews</Item> 
     <Item Name="ELocationID" Type="String" /> 
     <Item Name="SO" Type="String">2001 Jun;20(2):89-103</Item> 
    </DocSum> 
</eSummaryResult> 

Я хотел бы получить некоторые предметы по названию юдоли, например:

<Item Name="AuthorList" Type="List"> 
    <Item Name="Author" Type="String">Mantle D</Item> 
    <Item Name="Author" Type="String">Gok MA</Item> 
    <Item Name="Author" Type="String">Lennard TW</Item> 
</Item> 

в этом коде, как я могу получить с именем = "Автор"? Он должен печатать Mantle D, Gok MA, ...

Я нашел, как получить значение атрибута с помощью атрибута(), но не это.

Thans everyone!

+0

Вы могли бы решить с помощью оператора XPath; "// Item [@ Name = 'Автор']" –

ответ

1

simplexml и xpath сделает работу:

$xml = simplexml_load_string($x); // assume XML in $x 
$authors = $xml->xpath("//Item[@Name='Author']"); 

// echo them out 
foreach ($authors as $author) echo "$author <br />"; 

xpath-expression переводится как: Выбрать все <Item> -nodes - независимо от их положения в XML (двойные слеши) - с атрибутом Name (@ относится к атрибут), установленный в «Автор».

видеть, что это работает: http://codepad.viper-7.com/PQSDcV

Смежные вопросы