xml-bestand bewerken; notepad++ crasht

Status
Niet open voor verdere reacties.

mariannevanh

Terugkerende gebruiker
Lid geworden
14 dec 2004
Berichten
2.119
Voor het bewerken van een XML-bestand maak ik gebruik van Notepad++.
Echter, tijdens het bewerken verandert de opmaak van het document, terwijl ik niet kan achterhalen wat daarvan de oorzaak is.
In plaats van netjes ingesprongen tekst (twee spaties aan het begin van elk volgend "niveau") en afgebroken aan het eind van de regel, wordt de tekst nu achter elkaar weergegeven en zie ik "CR" en "LF" in zwarte blokjes met witte letters staan.
Ik negeer dat vooralsnog en breng de overige wijzigingen aan, maar dan opeens "crasht" het programma.
Wat kan ik eraan doen?

Tegelijk de vraag: is Notepad++ wel het meest ideale programma om een XML-tekstbestand te bewerken?
 
Je kunt Notepad++ onder de menukeuze "Syntaxis" op XML instellen.
Onder "Beeld" kun je kiezen voor Niet-afdrukbare tekens en dan regeleinde markeringen uitschakelen.
Tevens kan je onder "Beeld" de automatische terugloop uitschakelen.
 
Laatst bewerkt:
Onder "Beeld" kun je kiezen voor Niet-afdrukbare tekens en dan regeleinde markeringen uitschakelen.
Tevens kan je onder "Beeld" de automatische terugloop uitschakelen.

Dankjewel. Ik zie nu in het XML-bestand een aantal keer "BAD" staan als code.
Kan ik ook zoeken op deze code?
 
Op welke regel bijvoorbeeld?
 
Ik ben het bestand aan het aanpassen, omdat het programma waarin dit bestand wordt ingelezen meer mogelijkheden gekregen heeft.
Tijdens deze aanpassingen (met Notepad++, Beeld op XML ingesteld) kwam ik deze vreemde tekens tegen.
Maar nu het vreemde: in het bestand op de website kan ik op het desbetreffende punt geen vreemde codes vinden. Hoe dat mogelijk is, weet ik niet.
Wat gebeurt er als ik weer opnieuw begin met het aanbrengen van de wijzigingen? Zie ik weer zo'n gek "BAD"-symbool, dan zal ik het bestand bewaren en dat hier melden.
 
Dat wil ik dan wel eens zien inderdaad. Want mijn vraag om een regelnummer was omdat ik het niet tegen kwam.
 
In de bewerking van vandaag kwam ik 'm tegen. Ik heb dit bestand meteen opgeslagen en gezipt. Je vindt het bestand hier. De code BAD is in elk geval zichtbaar rondom regel 26788. Wat is dit voor code en hoe voorkom ik dit?
 
Ik heb het bestand bekeken maar op regel 26788 ziet ik nergens de tekst of code BAD staan.
Op die regel staat dit: <string>zij worden uitgezonden</string>

Doe eens het volgende:
- Kopieer het bestand naar een andere naam, dus niet hernoemen
- Open dat nieuwe bestand met Notepad++ en kijk dan of er nog steeds BAD op diezelfde positie staat
 
Laatst bewerkt:
Merkwaardig genoeg blijkt bij
* start Notepad++
* open het bestand Bundles_bad.sps
* spring naar regel 26788 en vind daar de door je aangewezen tekst "zij worden uitgezonden"
* stel nu de Syntaxis in op XML
* ga naar het einde van het document en constateer dat het XML-document niet op de normale manier (volgens de XML-structuur) eindigt.

Wat is het doel van de Syntaxis op XML kunnen instellen? Een XML-document is toch gewoon een tekstdocument?
Wat is er op tegen om het document als normaal tekstdocument te bewerken?

In de tekst wil ik de overbodige spaties verwijderen: "Hij ging naar de kerk" (de dubbele spatie achter "Hij" moet gewoon 1 spatie worden). Verder staan er teksten in met een ")" aan het einde van twee opeenvolgende regels en de toevoeging "2x". Voor de toepassing waarin deze data wordt gebruikt, moet de opmerking "2x" vervallen en moet de tekst nogmaals in het bestand worden opgenomen. Veel handmatig werk.
 
Ik vind op regel 26788 de tekst die je noemt maar nergens de code BAD.
Het doel van de syntaxis op XML is dat je direct kunt zien of de XML structuur in orde is.
Er is niks op tegen om het als een tekst document te bewerken.
 
Ik gooi het over een andere boeg, maar ook hier gebeurt iets vreemd. Ik begin opnieuw met het gedownloade document.
Om de dubbele spaties in de tekst op te sporen, vervang ik alle inspringspaties aan het begin van de regel door een TAB.
Dus: spatie spatie "<" wordt TAB "<"
en daarna: spatie spatie TAB wordt TAB TAB
Deze laatste zoekopdracht herhaal ik totdat er niets meer wordt gevonden.

Voordat ik begin is het slot van het bestand in orde, maar aan het einde van de zoek-vervang-cycli is het einde van het document een chaos.
Waardoor??
 
Laatst bewerkt:
Geen idee. Plaats het originele bestand hier eens.
 
Helaas, daarvoor is het te groot. Daarom staat er in het eerste bericht van dit topic al een link.
 
Geef eens voorbeeld van een regel die gewijzigd moet worden en hoe je die wil hebben, want spatie spatie "<" kom ik niet tegen.
 
Toegegeven, het is wat omslachtig (en nu ik het opnieuw lees misschien ook verkeerd) opgeschreven, maar regel 3 begint met
Code:
  <

Dus

Dus:
Code:
  <
wordt gewijzigd in
Code:
(tab)<
, waarbij er
en daarna:
Code:
  (tab)
wordt
Code:
(tab)(tab)
Deze laatste zoekopdracht herhaal ik totdat er niets meer wordt gevonden.
(tab) is dus een druk op de tab-toets.
 
Laatst bewerkt:
Ok, maar ik begrijp niet waarom je dat zou willen doen. En de kans is inderdaad groot dat je daarmee de XML structuur om zeep helpt. Wat is je doel met die actie?
 
Laatst bewerkt:
Ik wil alle dubbele spaties uit de tekst zelf verwijderen. Na mijn zoek-/vervang-actie zijn de dubbele spaties aan het begin van de regel tenminste niet meer aanwezig. Dat zoekt heel wat gemakkelijker...
Of is er een andere manier om slechts de spaties *IN* de tekst te vinden?
 
Ik heb er een programaatje voor gemaakt en je bestand geconverteerd. Je kunt het bestand hier downloaden:
http://www.filehosting.org/file/deta.../Bundles_1.zip

Deze bevat dus geen dubbele spaties meer in de tekst die tussen <string> en </string> staat.

Voor het gemak even snel in Excel VBA gemaakt.
Mocht je geïnteresseerd zijn in de code, bij deze:
Code:
Dim regel As String
'Voor Helpmij - guidovanh
'http://www.helpmij.nl/forum/showthread.php/858117-xml-bestand-bewerken-notepad-crasht

Sub guidovanh()
    Dim teller As Long
    Dim Pad As String
    
    Pad = "C:\Users\Ed\Helpmij\guideovanh\"
    Open Pad & "Bundles.sps" For Input As #1
    Open Pad & "Bundles_1.sps" For Output As #2
    
    While Not EOF(1)
        teller = teller + 1
        Line Input #1, regel
        If InStr(1, regel, "<string>") > 0 Then
            Call StripDoubleSpaces
        End If
        Application.StatusBar = "Regel: " & teller
        Print #2, regel
    Wend
    
    Application.StatusBar = False
    Close #1
    Close #2
End Sub

Sub StripDoubleSpaces()
    Dim dspos As Integer
    Dim tmps As String
    
    dspos = InStr(1, regel, "string")
    tmps = Mid(regel, dspos)
    
    If InStr(1, tmps, "  ") > 0 Then
        tmps = Replace(tmps, "  ", " ")
    End If
    
    regel = Mid(regel, 1, dspos - 1) & tmps
End Sub
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan