none
Cherche un nom de rue dans les fichier xml RRS feed

  • שאלה

  • Bonjour Monsieur

    Svp.

    A trouver:
    Cherche la rue: "Kapuzinergasse"

    dans les fichier xml qui sont organise en ordre alphabétique
    [buchstabe-a.xml..buchstabe-w.xml, buchstabe-z.xml]

    et d'inscrire toute les information dans un
    nouvelle fichier "Kapuzinergasse" xml.

    La structure des fichier:

    <adresse>
    	<suche buchstabe="A">
    		<root a_Lname1938="Abdank" a_Fname1938="Julius" a_job1938="Zählerhilfsmonteur des EWI" a_city_name1938="" a_street_name1938="Kapuzinergasse" a_hnr1938="34" a_lnr="1"/>
    	</suche>
    </adresse>

    Merci pour votre aide

    Arnold

    שבת 27 יוני 2020 08:30

תשובות

  • Bonsoir,

    en fait, j'ai montré 2 bouts de scripts, au départ, en séparant les problèmes.

    La 2ème partie du script devrait être inclue dans la 1ère boucle...

    cls
    
    $x=get-childitem "C:\Users\admin\OneDrive\Marion\xml-1938\index-rue-xml\*.xml"
    foreach ($i in $x) {
      $id=$i
    
    
    [xml]$fic=get-content $id
    
    # caption letter
    $LettreUpper=$fic.adresse.suche.buchstabe
    
    # letter transform to lower A-Z to a-z
    $LettreLower = $LettreUpper.ToLower()
    $new_letter = $LettreLower+"_street_name1938"
    $strasse=$fic.adresse.suche.root.$new_letter
    
    # maintenant, on peut vérifier si l'adresse contient le mot recherché...
    
    if ( $fic.adresse.suche.root.$new_letter -like "*Kapuziner*" ) {echo "Vrai"}
    
    }

    Le script d'avant ne traitait que le dernier fichier contenant z.

    Maintenant, tous les fichiers seront passés en revue. Il suffisait de décaler la fin de boucle } en fin de programme.

    A bientôt,


    Thierry DEMAN-BARCELO. Office Apps&Services MVP. MCSE:Enterprise admin, Messaging, Server Infrastructure 2016(89 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate, Security Admin https://base.faqexchange.info

    • סומן כתשובה על-ידי arnold_ יום שלישי 30 יוני 2020 19:18
    יום שלישי 30 יוני 2020 16:21

כל התגובות

  • Bonsoir,

    voici une méthode pour traiter au mieux les fichiers XML.

    L'aspect boucle sur les fichiers n'est, a priori, pas un problème.

    $x=get-childitem ".\*.xml"
    foreach ($i in $x) {
      $id=$i
    }

    L'astuce, c'est pour définir l'usage d'un fichier xml, et utiliser sa hiérarchie => Voici ce qui peut être mis dans la boucle indiquée plus haut!

    [xml]$fic=get-content $id # pour atteindre un élément de premier niveau echo $fic.adresse # Contenu du 2ème niveau : echo $fic.adresse.suche # variable du 2ème niveau echo $fic.adresse.suche.buchstabe # Contenu du 3ème niveau echo $fic.adresse.suche.root # Variable du 3ème niveau echo $fic.adresse.suche.root.a_street_name1938 $strasse=$fic.adresse.suche.root.a_street_name1938 # maintenant, on peut vérifier si l'adresse contient le mot recherché...

    if ( $fic.adresse.suche.root.a_street_name1938 -like "*Kapuziner*" ) {echo "Vrai"}

    A bientôt,



    Thierry DEMAN-BARCELO. Office Apps&Services MVP. MCSE:Enterprise admin, Messaging, Server Infrastructure 2016(89 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate, Security Admin https://base.faqexchange.info

    יום ראשון 28 יוני 2020 22:27
  • Bonsoir Monsieur

    Merci pour la réponse.

    Le jour passe, j'ai mis au point un petit stuff pour le fichier en format de text.

    Pour l'instant les nom des rue ne pas important:

    Mais, je n'arrive pas ressortier les numéros de rue en séquentielle/index primaire:

    cls
    $FileList = Get-ChildItem -Path "C:\Users\admin\temp\Riesengasse-1939-index-nom\"
    $Riesengasse = $FileList | Select-String -Pattern '<td>Riesengasse</td>'
    $Riesengasse | Out-File "C:\Users\admin\temp\Riesengasse-1939-index-nom\Riesengasse-1939-index-nom.txt"
    
    II "C:\Users\admin\temp\Riesengasse-1939-index-nom\Riesengasse-1939-index-nom.txt" # 104 ko

    Voici le résultat en sur une page web:

    année 1937 et 1939

    Merci

    Arnold

    Nota bene:

    La méthode a étais: lire touts le fichier txt dans le même dossier

    יום שני 29 יוני 2020 21:50
  • Bonjour Monsieur

    Votre proposition est parfait!

    Le scripte fonction bien sur un seul ficher:

    Cause: le lettre [a] pose problème. Chaque fichier utilise un autre lettre de l'alphab.

    ex:

    a_street_name1938, b_street_name ….

    cls
    
    $x=get-childitem ".\buchstabe-a.xml"
    foreach ($i in $x) {
      $id=$i
    }
    
    [xml]$fic=get-content $id
    $strasse=$fic.adresse.suche.root.a_street_name1938
    # maintenant, on peut vérifier si l'adresse contient le mot recherché...
    
    if ( $fic.adresse.suche.root.a_street_name1938 -like "*Kapuziner*" ) {echo "Vrai"}

    La réponse a étais avec 2 vrai! pour le seul fichier utiliser.

    est il possible utiliser le regex pour contournée cette problème? 

    Merci

    Arnold

    יום שלישי 30 יוני 2020 08:17
  • Bonjour,

    si la lettre A, B, ... correspond à la lettre indiquée dans Buchstabe, on peut récupérer le contenu de cette variable :

    $Lettre=$fic.adresse.suche.buchstabe

    Puis réintégrer cette variable dans les champs utilisés ensuite.

    $strasse=$fic.adresse.suche.root.$lettre_street_name1938
    #

    On peut probablement récupérer l'année de la même manière.

    A bientôt,


    Thierry DEMAN-BARCELO. Office Apps&Services MVP. MCSE:Enterprise admin, Messaging, Server Infrastructure 2016(89 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate, Security Admin https://base.faqexchange.info

    יום שלישי 30 יוני 2020 10:39
  • Bonjour Monsieur

    Merci pour votre réponse.

    Mr. on est pas loin d'obtenir un résultat

    J'ai modifier l'égerment votre script. Mes excuse.

    cls
    
    $x=get-childitem "C:\Users\admin\OneDrive\Marion\xml-1938\index-rue-xml\*.xml"
    foreach ($i in $x) {
      $id=$i
    }
    
    [xml]$fic=get-content $id
    
    # caption letter
    $LettreUpper=$fic.adresse.suche.buchstabe
    
    # letter transform to lower A-Z to a-z
    $LettreLower = $LettreUpper.ToLower()
    $new_letter = $LettreLower+"_street_name1938"
    $strasse=$fic.adresse.suche.root.$new_letter
    
    # maintenant, on peut vérifier si l'adresse contient le mot recherché...
    
    if ( $fic.adresse.suche.root.$new_letter -like "*Kapuziner*" ) {echo "Vrai"}

    Il me semble, il me manque un 2eme boucle.

    Tell, j'ai obtenue 1 "vrai", du dernière fichier avec la lettre "z"

    Merci

    Arnold

    Nota bene

    Pour le test: J'avais choisie cette rue étant elle a une longueur de 2 kms, malgré une urbanisation peut développer e cette époque.

    יום שלישי 30 יוני 2020 13:02
  • Bonsoir,

    en fait, j'ai montré 2 bouts de scripts, au départ, en séparant les problèmes.

    La 2ème partie du script devrait être inclue dans la 1ère boucle...

    cls
    
    $x=get-childitem "C:\Users\admin\OneDrive\Marion\xml-1938\index-rue-xml\*.xml"
    foreach ($i in $x) {
      $id=$i
    
    
    [xml]$fic=get-content $id
    
    # caption letter
    $LettreUpper=$fic.adresse.suche.buchstabe
    
    # letter transform to lower A-Z to a-z
    $LettreLower = $LettreUpper.ToLower()
    $new_letter = $LettreLower+"_street_name1938"
    $strasse=$fic.adresse.suche.root.$new_letter
    
    # maintenant, on peut vérifier si l'adresse contient le mot recherché...
    
    if ( $fic.adresse.suche.root.$new_letter -like "*Kapuziner*" ) {echo "Vrai"}
    
    }

    Le script d'avant ne traitait que le dernier fichier contenant z.

    Maintenant, tous les fichiers seront passés en revue. Il suffisait de décaler la fin de boucle } en fin de programme.

    A bientôt,


    Thierry DEMAN-BARCELO. Office Apps&Services MVP. MCSE:Enterprise admin, Messaging, Server Infrastructure 2016(89 MCPs). MCSA Office 365,Microsoft 365 Certified: Messaging Administrator Associate,Modern Desktop Administrator Associate, Security Admin https://base.faqexchange.info

    • סומן כתשובה על-ידי arnold_ יום שלישי 30 יוני 2020 19:18
    יום שלישי 30 יוני 2020 16:21