我正在寻求将XML文件转换为数据框。在这个XML文件中,我想恢复两个非嵌套元素,只要嵌套元素即可。
我试图检查一些在线资源,包括其他StackOverflow问题,但是由于我是R编程的业余爱好者,所以我找不到与我的案例类似的示例。
这是我手头的XML的示例:
<?xml version="1.0" encoding="UTF-8"?>
<INSTITUTIONS>
<INSTITUTION>
<SORT>040706201 DIGNE-LES-BAINS MEDIATHEQUE INTERCOMMUNALE DES TROIS VALLEES. DIGNE-LES-BAINS, ALPES DE HAUTE-PROVENCE</SORT>
<DISPLAY>institution - Digne-les-Bains - Médiathèque intercommunale des Trois Vallées. Digne-les-Bains, Alpes de Haute-Provence</DISPLAY>
<BNF_STATUT display="validée">N</BNF_STATUT>
<BNF_TYPE display="institution">1</BNF_TYPE>
<BNF_UNICITE>04000 Médiathèque intercommunale des Trois Vallées. Digne-les-Bains, Alpes de Haute-Provence</BNF_UNICITE>
<XML_FIELD>
<DONCODE_SET>
<NOMORGBIB>DLL</NOMORGBIB>
<CODEISIL>FR-040706201</CODEISIL>
<PREFIXE>FR</PREFIXE>
</DONCODE_SET>
<DID_SEL>
<CODERCR>040706201</CODERCR>
<NOMETABLISSEMENT>Médiathèque intercommunale des Trois Vallées. Digne-les-Bains, Alpes de Haute-Provence</NOMETABLISSEMENT>
<NOMETABAFF>Bibliothèque municipale</NOMETABAFF>
<NOMCOURT1>6710</NOMCOURT1>
<NOMCOURT2>DIGNE-LES-BAINS - BM</NOMCOURT2>
<NOMRESPONSABLE>Marlène Camilleri</NOMRESPONSABLE>
<NOMTUTELLE>COMMUNES DE DIGNE-LES-BAINS, LA ROBINE, MARCOUS, ENTRAGES</NOMTUTELLE>
<TYPEETABABES display="BM non classée">62</TYPEETABABES>
<TYPEFAMABES display="Bibliothèque Municipale">6</TYPEFAMABES>
<TYPEINST display="Bibliothèque médiathèque municipale ou intercommunale">1</TYPEINST>
</DID_SEL>
<ADRESSES_SEL>
<ADRESSE_SET>
<ADRES_CODEPOSTAL>04000</ADRES_CODEPOSTAL>
<ADRES_LATITUDE>44.0916864</ADRES_LATITUDE>
<ADRES_LONGITUDE>6.2341449</ADRES_LONGITUDE>
</ADRESSE_SET>
</ADRESSES_SEL>
<ETAB_SEL>
<DATECREATIONETAB>1816</DATECREATIONETAB>
<HISTORIQUEETAB>La bibliothèque a été créee en 1816, d'abord départementale puis communale en 1824.
Le fonds ancien provient des couvents de Haute-Provence, Récollets de Riez, Trinitaires de Digne, Minimes de Mane et de bibliothèques d'émigrés.
En janvier 2003, la bibliothèque devient intercommunale.
Le 16 septembre 2006, la nouvelle Médiathèque est inaugurée à l'Ilot Granoux.</HISTORIQUEETAB>
</ETAB_SEL>
<SERVICES_SEL>
<SERVICE_SET>
<TYPESERVICE display="Reproduction">4</TYPESERVICE>
<SERVICE_REPRO display="Photocopie">1</SERVICE_REPRO>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Renseignements bibliographiques">7</TYPESERVICE>
<SERVICE_RENS display="Par téléphone_RS_Par télécopie_RS_Par courrier_RS_Par courrier électronique">3/4/5/6</SERVICE_RENS>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Réservation de documents">6</TYPESERVICE>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Elaboration de bibliographies">8</TYPESERVICE>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Prêt entre bibliothèques">5</TYPESERVICE>
<SERVICE_SPECIF>Prêt simple entre bibliothèques</SERVICE_SPECIF>
<SERVICE_CONDUTIL>Photocopies</SERVICE_CONDUTIL>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Consultation sur place">1</TYPESERVICE>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Prêt à domicile">3</TYPESERVICE>
<SERVICE_CONDUTIL>Tous publics</SERVICE_CONDUTIL>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Autre service">28</TYPESERVICE>
<SERVICE_SPECIF>Orientation des demandeurs sur d'autres sources</SERVICE_SPECIF>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Catalogue en ligne">10</TYPESERVICE>
<SERVICE_URL>http://www.mediatheque-digne.fr/opacwebaloes/index.aspx</SERVICE_URL>
</SERVICE_SET>
</SERVICES_SEL>
<PUBLICATIONS_SEL>
<PUBLI_GENE>Dépouillement des périodiques auxquels la Bibliothèque municipale est abonnée à partir de 1998</PUBLI_GENE>
<PUBLI_BIBLIOGR>Cauvin (C.). Les origines de la bibliothèque de Digne. 1912, 28 p. (Bulletin de la société scientifique et littéraire des Basses-Alpes, t. XV).
VIRE (M-M) - La Bibliothèque de Digne (Annales de Haute-Provence du n° 268 au n° 277).
Patrimoine des bibliothèques de France : un guide des régions, t.6, Provence-Alpes-Côte d'Azur</PUBLI_BIBLIOGR>
</PUBLICATIONS_SEL>
<INFOCOMP_SEL>
<CLASSIFICATION>Dewey pour la partie lecture publique, par format pour le fonds ancien.</CLASSIFICATION>
<CATALOGUES>Catalogues informatisés, sauf fonds ancien et 1ère partie du XX.
Catalogue général des manuscrits tIX,</CATALOGUES>
<CATALOGUECOLLECTIF_SET>
<CATALOGUECOLLECTIF>Catalogue général des manuscrits des bibliothèques publiques de France. Départements — Tome IX. pp 153-157 par Chaspoul. Digne (1-34)</CATALOGUECOLLECTIF>
</CATALOGUECOLLECTIF_SET>
<CATALOGUECOLLECTIF_SET>
<CATALOGUECOLLECTIF_CTRL display="CCFr Manuscrits">ccfm</CATALOGUECOLLECTIF_CTRL>
<CATALOGUECOLLECTIF_URL>http://ccfr.bnf.fr/portailccfr/jsp/index_view_direct_anonymous.jsp?record=eadcgm:EADI:FRCGMBPF-040706201-01a.xml</CATALOGUECOLLECTIF_URL>
</CATALOGUECOLLECTIF_SET>
<CATALOGUECOLLECTIF_SET>
<CATALOGUECOLLECTIF_CTRL display="Sudoc PS">sups</CATALOGUECOLLECTIF_CTRL>
<CATALOGUECOLLECTIF_URL>http://www.abes.fr/abes/page,366,reseau-sudoc-ps.html</CATALOGUECOLLECTIF_URL>
</CATALOGUECOLLECTIF_SET>
</INFOCOMP_SEL>
<CATALOGUE_URL_LIGNE>http://www.mediatheque-digne.fr/opacwebaloes/index.aspx</CATALOGUE_URL_LIGNE>
</XML_FIELD>
<ARK_REF>/06871/0026710</ARK_REF>
</INSTITUTION>
<INSTITUTION>
<SORT>130026201 ALLAUCH BIBLIOTHEQUE BERNARD MONGE. ALLAUCH, BOUCHES-DU-RHONE</SORT>
<DISPLAY>institution - Allauch - Bibliothèque Bernard Monge. Allauch, Bouches-du-Rhône</DISPLAY>
<BNF_STATUT display="validée">N</BNF_STATUT>
<BNF_TYPE display="institution">1</BNF_TYPE>
<BNF_UNICITE>13190 Bibliothèque Bernard Monge. Allauch, Bouches-du-Rhône</BNF_UNICITE>
<XML_FIELD>
<DONCODE_SET>
<NOMORGBIB>DLL</NOMORGBIB>
<CODEISIL>FR-130026201</CODEISIL>
<PREFIXE>FR</PREFIXE>
</DONCODE_SET>
<ADRESSES_SEL>
<ADRESSE_SET>
<ADRES_CODEPOSTAL>13190</ADRES_CODEPOSTAL>
<ADRES_COMMUNE>Allauch</ADRES_COMMUNE>
<ADRES_LATITUDE>43.3345064</ADRES_LATITUDE>
<ADRES_LONGITUDE>5.4833823</ADRES_LONGITUDE>
</ADRESSE_SET>
</ADRESSES_SEL>
<SERVICES_SEL>
<SERVICE_SET>
<TYPESERVICE display="Accès bases de données externes">12</TYPESERVICE>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Reproduction">4</TYPESERVICE>
<SERVICE_REPRO display="Photocopie">1</SERVICE_REPRO>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Réservation de documents">6</TYPESERVICE>
<SERVICE_CONDUTIL>Pour les abonnés seulement</SERVICE_CONDUTIL>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Elaboration de bibliographies">8</TYPESERVICE>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Consultation sur place">1</TYPESERVICE>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Prêt à domicile">3</TYPESERVICE>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Portage de documents à domicile">9</TYPESERVICE>
<SERVICE_CONDUTIL>Personnes handicapées qui en font la demande</SERVICE_CONDUTIL>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Catalogue en ligne">10</TYPESERVICE>
<SERVICE_URL>http://biblio.allauch.com/search1.html</SERVICE_URL>
</SERVICE_SET>
<SERVICE_SET>
<TYPESERVICE display="Compte utilisateur/lecteur">16</TYPESERVICE>
</SERVICE_SET>
</SERVICES_SEL>
</INSTITUTION>
在所有这些元素中,我想恢复以下值
NOMETABLISSEMENT, TYPEFAMABES
非常简单,因为它们不是嵌套值,但是我也想恢复
ADRES_CODEPOSTAL, ADRES_LATITUDE, ADRES_LATITUDE, ADRES_LONGITUDE
特别是我最想恢复的所有
TYPE_SERVICE display=> attributes under <SERVICES_SEL> <SERVICE_SET>
这是我要恢复的预期结果,每个type_service_display都在一个单独的列下表示。当然知道在我的数据集上,所有库都将具有不同数量的“类型服务”(一些将具有更多的服务,而另一些将仅具有一两个),但是如果我对这些列具有NA值,则可以。
为简单起见,我转置了列并添加了“标签”
|NOMETABLISSEMENT| |Médiathèque intercommunale des Trois Vallées etc.| |Bibliotheque X|
|TYPEFAMABES| |6| |3|
|ADRES_CODEPOSTAL| |4000| |3900|
|ADRES_LATITUDE| |44.0916864| |44.556|
|ADRES_LONGITUDE| |6.2341449| |6.777|
|TYPE_SERVICE DISPLAY 1| |Reproduction| |Reproduction|
|TYPE_SERVICE DISPLAY 1| |"Renseignements bibliographiques| |Réservation de documents|
|TYPE_SERVICE DISPLAY 2| |Réservation de documents| |NA|
|TYPE_SERVICE DISPLAY 2| |Elaboration de bibliographies| |NA|
我想答案将主要需要XPATH来保持递归,但是我仍然无法编写这种复杂的内容,因此将不胜感激。
非常感谢!
卡米洛