So erhalten Sie Matlab, um die korrekte Anzahl an XML-Knoten zu lesen

8

Ich lese eine einfache XML-Datei mit der internen xmlread-Funktion von Matlab.

%Vor%

Aber wenn ich getChildren () vom Element ref aufruft, sagt es mir, dass es 5 Kinder hat.

Es funktioniert einwandfrei IF Ich lege das gesamte XML in EINE Zeile . Matlab sagt mir, dass ref element 2 children hat.

Es scheint die Räume zwischen den Elementen nicht zu mögen.

Auch wenn ich Canonicalize im oXygen XML-Editor ausführe, bekomme ich immer noch die gleichen Ergebnisse. Weil Canonicalize immer noch Leerzeichen enthält.

Matlab verwendet Java und Xerces für XML-Dateien.

Frage:

Was kann ich tun, damit ich meine XML-Datei in einem für Menschen lesbaren Format behalten kann (nicht alle in einer Zeile), aber Matlab trotzdem korrekt parse?

Codeaktualisierung:

%Vor%     
capdragon 18.07.2012, 19:09
quelle

2 Antworten

10

Der XML-Parser hinter den Szenen erstellt # text-Knoten für alle Leerzeichen zwischen den Knotenelementen. Wo immer eine neue Zeile oder Einrückung vorhanden ist, wird ein # Text-Knoten mit dem Zeilenumbruch und den folgenden Einrückräumen im Datenteil des Knotens erzeugt. In dem XML-Beispiel, das Sie beim Analysieren der untergeordneten Knoten des Elements "ref" angegeben haben, gibt es 5 Knoten

zurück
  1. Knoten 1: #text mit Zeilenumbrüchen und Einrückräumen
  2. Knoten 2: Knoten "requestor", der seinerseits ein #text Kind mit "John Doe" im Datenteil
  3. hat
  4. Knoten 3: #text mit Zeilenumbrüchen und Einrückräumen
  5. Knoten 4: Knoten "project", der seinerseits ein #text Kind mit "X" im Datenteil
  6. hat
  7. Knoten 5: #text mit Zeilenumbrüchen und Einrückräumen

Diese Funktion entfernt all diese unbrauchbaren # text-Knoten für Sie. Beachten Sie, dass wenn Sie absichtlich ein xml-Element haben, das nur aus Leerzeichen besteht, wird diese Funktion es entfernen, aber für die 99,99% der xml-Fälle sollte das gut funktionieren.

%Vor%

Nenn es so

%Vor%     
cholland 19.07.2012, 01:44
quelle
1

Ich fand, dass @chollands Antwort gut war, aber ich mochte die zusätzliche XML-Arbeit nicht. Also hier ist eine Lösung, um den Whitespace von einer Kopie der XML-Datei zu entfernen, die die Ursache der unerwünschten Elemente ist.

%Vor%     
ldgorman 19.06.2017 15:39
quelle

Tags und Links