• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

XML bestanden inlezen

Status
Niet open voor verdere reacties.

AnnevdD

Verenigingslid
Lid geworden
8 mei 2007
Berichten
247
Ik heb geen ervaring met het gebruik van XML en wil dat wel mee gaan werken.
Maar het lukt me niet. Hieronder een verslagje van mijn poging.

Ik heb een directory gemaakt C:\XMLtest Waarin ik twee xml testbestanden test01.xml en test02.xml heb opgenomen. Dit bestanden bevatten als inhoud één testveld, dus:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Testveld>testveld01</Testveld>
Verder heb ik een nieuw excel bestand XMLproef.xlsx gemaakt waarin ik xml-bestanden wil gaan inlezen. Zie bijlage

Maar dat inlezen lukt me niet. Ik krijg steeds nietszeggende foutmeldingen die resulteren in “niet ingelezen”.

Ik heb het volgende gedaan:
Open XMLproef.xlsx
Importeer (in ontwikkelaars gebied) het bestand test01.xml, waarbij: xml tabel op bestaand werkblad met cel $A$2 en Eigenschap “bestaande gegevens overschrijven …” aangevinkt.
Ik zie nu in cel A2 “testveld01” staan.
Bij activeren van de bron zie ik dat er “Testveld-toewijzing” is gemaakt met in Testveld de waarde testveld01.
Het vervolgens importeren van bestand test02.xml levert niets op. Ook geen melding.
Klik op de knop XML-toewijzingen onder de XML-bron. Dan verschijnt een venster waarin je een toewijzing kan toevoegen.
Als ik daar weer test01.xml Invoer ontstaat een tweede toewijzing, “Testveld-toewijzing1“ genoemd.
Onder XML-bron staan nu twee toewijzingen. Van de nieuwe Testveld-toewijzing1 kan ik het element (Testveld) naar cel B2 slepen en dan krijg ik de mogelijkheid om een kop aan te wijzen, die kop plaats ik boven het element in cel B1.

Als ik nu bestand test02.xml importeer kan ik kiezen uit Testveld-toewijzing En Testveld-toewijzing1.
Als ik hierbij voor Testveld-toewijzing kies gebeurt er niets.
Als ik vervolgens rij 2 verwijder en opnieuw bestand test02.xml importeer kan ik weer kiezen uit Testveld-toewijzing En Testveld-toewijzing1. Nu krijg ik bij beide twee foutmeldingen: “Geen toegewezen elementen” en “De gegevens zijn niet of slechts gedeeltelijk geimporteerd”.
Weet iemand wat ik verkeerd doe?
 

Bijlagen

Als je om een of andere reden écht met XML-bestanden wil gaan werken als bron voor gegevens raad ik je aan een goed boek of cursus te kopen : zo simpel is dat eigenlijk niet...
En Excel is eigenlijk al een XML-formaat editor !

Wat je zou kunnen doen (uit leergierigheid !) is eens een bestaand XLSX bestand te nemen met een behoorlijke tabel en dat uit te voeren naar XML-bestand.
Dan openen met je editor en eens kijken hoe dat eruit ziet : kan je al iets uit leren denk ik ...
 
Dank voor je reactie.
Wat je voorstelt mbt dat voorbeeld heb ik gedaan. Ik weet hoe een XML-bestand qua structuur in elkaar zit, maar het lukt me niet een nieuw bestand op te zetten en daarin de toewijzing goed en goed geactiveerd te krijgen. Dat is het probleem, denk ik.
Daarom heb ik uiteindelijk een bestand met maar één veld gemaakt om het uit te proberen en heb dat als probleemvoorbeeld op de site gezet.
De aanwijzingen in Excel helpen me niet en kloppen voor een deel ook echt niet.

Ik zie waarschijnlijk iets over het hoofd en hoop dat er in HelpMij iemand is die voldoende kennis heeft om aan te geven waar deze eenvoudige situatie fout gaat.
Dan zal de rest wel lukken, lijkt me (hoop ik ;))

Dus ik wacht even af of er hulp komt...
 
Jammer dat er verder geen reactie is gekomen.
Ik heb met veel experimenteren en vergelijken het probleem gedeeltelijk / grotendeels opgelost.
Ik ben het nu aan het uitwerken en kom wat andere problemen tegen, die ik waarschijnlijk in een aparte vraag op HelpMij zal zetten.
Ik sluit daarom deze vraag.
 
test02.xml bevat ook testveld1 als waarde.
Welke excel versie heb je? ik heb excel2007nl

Volg deze stappen, zie https://www.excel-easy.com/examples/xml.html
Let vooral op stap "8. Now simply drag (map) the 4 elements from the tree onto the worksheet (row 1)."
Sleep naar b.v. C1
Stap 9 en 10 hoef jij niet te doen.

Vervolgens kan je Ontwikkelaar-XML-Importen gebruiken (wel eerst je voorbeeldjes aanpassen zoals hierboven beschreven is)
 
Laatst bewerkt:
Dank Alphamax voor je reactie. Die waarde in test02.xml klopte niet, dank voor je oplettendheid.
Dank ook voor de link die je stuurde, dat is een mooie beschrijving.
Ik heb zelf ook zo'n soort oplossing gevonden.
Het gaat er bij mij om dat ik een hele set xml bestanden heb die ik als records in een xls inlees.

Daarbij heb ik nu eigenlijk nog twee problemen:
. als ik een xml-bestand inlees waarin een speciaal teken staat, bijv. in de naam Joël dan krijg ik een parseerfout
. ik zou graag een schemadefinitie maken waarin ik de verschillende velden kan beschrijven maar daar kan ik geen goede kloppende beschrijving van vinden.

Het zou fijn zijn als iemand me daar mee kan helpen.

Daarom heb ik deze vraag maar weer als niet opgelost gezet, hoe wel de vraag eigenlijk een beetje veranderd is.
 
Welke versie van Excel gebruik jij Anne? Kijk anders eens naar Gegevens, Gegevens ophalen, Van Bestand, Van Folder.
 
Ik gebruik de nieuwste Excel-versie via Office 365

Via Gegevens, Gegevens ophalen, Van Bestand, Van Folder zie ik geen antwoorden op mijn vragen.
 
Jazeker wel.
Download de bijlage en rechtsklik op de tabel en kies:
2020-07-15_10-47-40.gif
Klik op het wieltje om het pad aan te passen naar datgene waar jouw xml bestanden staan en druk op alles vernieuwen:
2020-07-15_10-46-10.gif
 

Bijlagen

Als je hulp wil bij het instellen van een dergelijke import met je echte XML bestanden, dan hoor ik het wel.
 
Ja, als je me kan helpen met mijn vragen, graag.
Ik heb in de bijlage een nieuwe testset opgenomen, gebaseerd op de werkelijke huidige stand van zaken. De namen zijn fictieve en incomplete namen.
Het speciale tekens probleem kan worden opgelost door de xml bestanden als UTF-8 te coderen ipv ANSI. Zie Harriette_02 dat ANSI gecodeerd is en een foutmelding oplevert. Maar als het op een andere manier kan, graag.

Ik moet de datums als jjjjmmdd, dus als getal opnemen omdat ik bij datums in de vorm dd-mm-jjjj een foutmelding krijg. Blijkbaar worden datums als numeriek verondersteld, maar waarom dat zo is weet ik niet.
Ik zou daarom graag de mogelijkheid hebben om het type van elk element vast te leggen en of het een al of niet verplicht element is.

Als je me daar mee kan helpen, zou dat heel fijn zijn.:)
 

Bijlagen

Hoe worden deze xml bestanden gegenereerd? Ze missen de header die bij een xml bestand hoort en die bijvoorbeeld de encoding vastlegt en eventueel een verwijzing naar het schema bevat.
 
Als je in de XML-betanden als 1e regel dit opneemt gaat het goed.

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

Code:
Sub M_snb()
  c00 = ThisWorkbook.Path & "\Status\"
  c01 = Dir(c00 & "*.xml")
   
  Do Until c01 = ""
    c02 = c00 & c01
    With CreateObject("scripting.filesystemobject")
      .createtextfile(c02).write "<?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?>" & vbCrLf & .opentextfile(c02).readall
    End With
        
    ActiveWorkbook.XmlMaps(1).Import c02
        
    c01 = Dir
   Loop
End Sub
 
Laatst bewerkt:
Dank jullie voor je reacties.
Ik maak de XML bestanden door ze vanuit een Excel module te schrijven. Eerst had ik die eerste regel er in zitten, maar die heb ik later weggelaten omdat die geen nut leek te hebben.
Ik zal hem weer opnemen, waarschijnlijk ben ik dan het speciale tekens probleem kwijt.

Dank ook voor de documentatie, ik hoop daarin bruikbare informatie tbv het vastleggen van element-types te vinden.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan