0

I am trying to extract some values from an XML file. This XML contains multiple 'spreekbeurten' (speaches) from members of the parliament. Each 'spreekbeurt' has a speaker (member of parliament) and 'partij' (party of the member). It could be that speaker is not party member; so than there is no party. This specific XML files has 105 'spreekbeurten'. So my objective is to retrieve the following values for each 'spreekbeurt':

//spreekbeurt/spreker/naam/achternaam #(surname of speaker)
//spreekbeurt/spreker/politiek   #(party of member)
//spreekbeurt/tekst/al-groep/al #(contains text of the 'spreekbeurt')

See further below for snippet of XML file

Per 'spreekbeurt' I would like to extract the values. The reason for extracting the values per spreekbeurt one by one, is for the reason that I would like to add NA for 'politiek' in case it is missing.

R-Code

 xml_file = xmlParse(paste0(getwd(),'/Xml/',dfRSS$Xml[23],'.xml'))
  xml_object = read_xml(paste0(getwd(),'/Xml/',dfRSS$Xml[23],'.xml'))

  titel = xml_object %>% 
    xml_find_all("//item-titel") %>%
    as_list() %>% unlist 

  spreekbeurt = xml_object %>% 
    xml_find_all("//spreekbeurt")

tekst = spreekbeurt[2]  %>% 
  xml_find_first("//spreekbeurt/tekst/al-groep/al") %>%
  as_list() %>% unlist

naam = spreekbeurt[2]  %>% 
  xml_find_first("//spreekbeurt/spreker/naam/achternaam") %>%
  as_list() %>% unlist 

partij = spreekbeurt[2]  %>% 
  xml_find_first("//spreekbeurt/spreker/politiek") %>%
  as_list() %>% unlist 
  • xml_find_first return the first one in the nodeset even if I apply on spreekbeurt[2]
  • xml_find_all returns all of the nodeset.

How could I retrieve the values for only the second nodeset as coded in R above?

Other info:

Result for spreekbeurt:

{xml_nodeset (105)}
 [1] <spreekbeurt nieuw="ja">\n  <spreker><voorvoegsels>De heer</voorvoegsels><naam><achternaam>Bisschop</achternaam ...
 [2] <spreekbeurt nieuw="nee">\n  <spreker><voorvoegsels>De</voorvoegsels><naam><achternaam>voorzitter</achternaam>< ...
 [3] <spreekbeurt nieuw="ja">\n  <spreker><voorvoegsels>Mevrouw</voorvoegsels><naam><achternaam>Voortman</achternaam ...
 [4] <spreekbeurt nieuw="ja">\n  <spreker><voorvoegsels>De heer</voorvoegsels><naam><achternaam>Verhoeven</achternaa ...
 [5] <spreekbeurt nieuw="ja">\n  <spreker><voorvoegsels>Mevrouw</voorvoegsels><naam><achternaam>Keijzer</achternaam> ...
 [6] <spreekbeurt nieuw="ja">\n  <spreker><voorvoegsels>De heer</voorvoegsels><naam><achternaam>Voordewind</achterna ...
 [7] <spreekbeurt nieuw="nee">\n  <spreker><voorvoegsels>De</voorvoegsels><naam><achternaam>voorzitter</achternaam>< ...
 [8] <spreekbeurt nieuw="ja">\n  <spreker><voorvoegsels>De heer</voorvoegsels><naam><achternaam>Harbers</achternaam> ...
 [9] <spreekbeurt nieuw="ja">\n  <spreker><voorvoegsels>De heer</voorvoegsels><naam><achternaam>Van Raak</achternaam ...
[10] <spreekbeurt nieuw="ja">\n  <spreker><voorvoegsels>Mevrouw</voorvoegsels><naam><achternaam>Kuiken</achternaam>< ...
[11] <spreekbeurt nieuw="ja">\n  <spreker><voorvoegsels>Mevrouw</voorvoegsels><naam><achternaam>Agema</achternaam></ ...
[12] <spreekbeurt nieuw="nee">\n  <spreker><voorvoegsels>De heer</voorvoegsels><naam><achternaam>Van Raak</achternaa ...
[13] <spreekbeurt nieuw="nee">\n  <spreker><voorvoegsels>Mevrouw</voorvoegsels><naam><achternaam>Agema</achternaam>< ...
[14] <spreekbeurt nieuw="nee">\n  <spreker><voorvoegsels>De heer</voorvoegsels><naam><achternaam>Van Raak</achternaa ...
[15] <spreekbeurt nieuw="nee">\n  <spreker><voorvoegsels>Mevrouw</voorvoegsels><naam><achternaam>Agema</achternaam>< ...
[16] <spreekbeurt nieuw="nee">\n  <spreker><voorvoegsels>Mevrouw</voorvoegsels><naam><achternaam>Voortman</achternaa ...
[17] <spreekbeurt nieuw="nee">\n  <spreker><voorvoegsels>Mevrouw</voorvoegsels><naam><achternaam>Agema</achternaam>< ...
[18] <spreekbeurt nieuw="nee">\n  <spreker><voorvoegsels>Mevrouw</voorvoegsels><naam><achternaam>Voortman</achternaa ...
[19] <spreekbeurt nieuw="nee">\n  <spreker><voorvoegsels>Mevrouw</voorvoegsels><naam><achternaam>Agema</achternaam>< ...
[20] <spreekbeurt nieuw="nee">\n  <spreker><voorvoegsels>Mevrouw</voorvoegsels><naam><achternaam>Voortman</achternaa ...
...

XML file snippet:

<spreker>

  <voorvoegsels>De heer</voorvoegsels>

  <naam>

    <achternaam>Bisschop</achternaam>

  </naam> (<politiek>SGP</politiek>):</spreker>

<tekst status="goed">

  <al-groep>

    <al>Voorzitter. Ik ging ervan uit dat wij in volgorde van grootte van de fracties zouden spreken. Blijkbaar was mijn oriëntatie niet helemaal correct en ben ik snel aangemeld. Ik dank u dat ik als eerste het woord krijgt.</al>

  </al-groep>

  <al-groep>

    <al>Vanwege het ontbreken van een tegenkandidaat was de verkiezing van de nieuwe Kamervoorzitter bijna bij acclamatie gebeurd. Ik vermoed dat dit een unicum, een novum zou zijn geweest in de geschiedenis van de Staten-Generaal. Maar ook als het Kamervoorzitterschap wordt gecontinueerd, is enig decorum bij het vervullen van dit ambt op zijn plaats. Vandaar dat ook nu weer is voorzien in vier stemronden met zo nodig nog een tussenstemming. Wij kunnen aan de bak.</al>

  </al-groep>

  <al-groep>

    <al>Niet ontkend kan worden dat de stemming over de nieuwe Kamervoorzitter vandaag, iets weg heeft van een functioneringsbeoordeling. Aangezien een dergelijke beoordeling vertrouwelijk van aard is, doe ik over de inhoud daarvan geen mededelingen namens mijn fractie, al verheel ik niet dat de SGP-fractie het afgelopen jaar met waardering heeft kennisgenomen van het optreden van de Kamervoorzitter.</al>

  </al-groep>

  <al-groep>

    <al>De fractie van de SGP beperkt zich op dit moment tot twee vragen aan de kandidaat-voorzitter. In de eerste plaats wil ik de kandidaat-voorzitter een spiegel voorhouden van een van haar roemruchte voorgangers, de heer Vondeling. Hij was van dezelfde politieke familie en Kamervoorzitter van 1972 tot en met 1979. De onvolprezen parlementaire informatiebron Parlement en Politiek meldt onder meer het volgende over hem: "Hij trad soms als "schoolmeester" van de Kamer op. Toen bij de plenaire behandeling van een wetsvoorstel over het gevangeniswezen nog eens 75 feitelijke vragen waren gesteld, vroeg hij of niet beter de commissie voor Justitie nog eens bijeengeroepen was om ervoor te zorgen dat deze behandeling een andere inhoud kreeg." Ik voeg hieraan toe dat het woord "schoolmeester" in deze context als een positieve kwalificatie wordt gezien. Dat is het natuurlijk altijd wel, maar ik zeg het er hier nog eens speciaal bij. Het probleem was natuurlijk dat plenair nog zo veel vragen werden gesteld; dat verdiende een betere voorbereiding. Mijn vraag aan de kandidaat-voorzitter is hoe zij dit optreden van deze voorganger waardeert. Overigens mag ik er nog bij vertellen dat de heer Vondeling zijn opvolger als fractievoorzitter van de PvdA slechts wat velletjes briefpapier van de voetbalclub Cambuur naliet, althans zo gaat het verhaal. Dat blijft hier uiteraard buiten beschouwing.</al>

  </al-groep>

  <al-groep>

    <al>Dan kom ik bij de tweede vraag. Die heeft betrekking op de verantwoordelijkheid van de Kamervoorzitter voor de bedrijfsvoering van de Tweede Kamer, zeg maar de bedrijfsinterne taak. Ik doel dan met name op de zorg voor het Kamerpersoneel. Wij realiseren ons als Kamerleden misschien wel eens te weinig hoe cruciaal, maar ook hoe veeleisend de bijdrage van al deze mannen en vrouwen is voor het soepel laten functioneren van het parlementaire bedrijf in al zijn facetten. De kandidaat-voorzitter schrijft in haar brief over dit punt: "Veel gaat goed, maar het is ook nodig om de ambtelijke organisatie kritisch tegen het licht te houden. Samen met het Presidium heb ik het afgelopen jaar stappen gezet in de professionalisering en verzakelijking van de ambtelijke organisatie, maar we zijn er nog niet." Natuurlijk, de professionele en de zakelijke kant van het bedrijf moeten goed geregeld zijn, maar er is meer nodig voor een arbeidsvreugdevolle werkweek voor de medewerkers. Mijn tweede vraag is daarom: welke mogelijkheden ziet de beoogd Voorzitter om de immateriële aspecten van arbeidsvreugde te behouden of te bevorderen?</al>

  </al-groep>

  <al-groep>

    <al>Ik zie uit naar de reflecties van de kandidaat op deze vragen. Ik zeg dank voor de gelegenheid om het woord te voeren.</al>

  </al-groep>

</tekst>

<spreker>

  <voorvoegsels>De</voorvoegsels>

  <naam>

    <achternaam>voorzitter</achternaam>

  </naam>:</spreker>

<tekst status="goed">

  <al-groep>

    <al>Die reflecties zullen later volgen.</al>

  </al-groep>

</tekst>

bbilal
  • 211
  • 1
  • 2
  • 8
  • 1
    To solve your problem use a "." before the //. From the xml2 documentation: "# Note the difference between .// and // # // finds anywhere in the document (ignoring the current node) # .// finds anywhere beneath the current node" – Dave2e Apr 19 '18 at 16:50
  • Thanks a lot! That fixed it. – bbilal Apr 20 '18 at 07:50

0 Answers0