ImportNode erstellt ein leeres xmlns-Attribut

8

Diesen Code neu erstellen:

%Vor%

tmpNewNode wird mit einem leeren xmlns-Attribut (xmlns="") erstellt. Irgendwelche Vorschläge wie kann ich es vermeiden?

10x

    
Guy 02.12.2010, 15:02
quelle

6 Antworten

8

Was wahrscheinlich passiert, ist, dass newNode von einem Dokument kommt, für das kein Namespace deklariert ist, aber oldNode in einem Dokument mit einem Namespace ist. In dieser Situation nimmt der Knoten seinen leeren Namespace in das neue Dokument und er wird explizit angezeigt. Um ehrlich zu sein, wenn es nur ein Problem für einen String-Vergleich ist, wird es nicht schaden, alle Instanzen von xmlns="" aus der XML-Zeichenkette zu entfernen, bevor Sie damit arbeiten.

    
MarkXA 06.12.2010, 19:51
quelle
0

Entlang der Zeilen von was MarkXA sagte :

  

Was hier wahrscheinlich passiert, ist das   newNode kommt von einem Dokument mit keiner   Namespace deklariert, aber oldNode ist in   ein Dokument mit einem Namespace. In diesem   Situation, der Knoten nimmt seine leere   Namespace über das neue Dokument und   es zeigt sich explizit.

Sie könnten die Zeichenfolge für den Zweck des Vergleichs manipulieren, aber die Knoten in Ihrem DOM würden nicht korrekt für den Namespace qualifiziert sein, was später Probleme verursachen könnte, wenn Sie versuchen würden, sie zu verwenden.

Die richtige Lösung bestünde darin, newNode mit der richtigen Namespace-Qualifizierung zu erstellen. Unter propery-Namespace-Qualifizierung verstehe ich die Namespaces, die im importierenden DOM verwendet werden.

    
Blaise Doughan 10.12.2010 21:53
quelle
0

Ich habe das selbe Problem, als ich ein XmlElement wie hier erstellt habe

%Vor%

danach habe ich nach dem Speichern das Attribut xmlns="" erhalten.

Wenn ich den Namespace des Dokuments verwende, könnte ich dieses xmlns-Attribut unterdrücken.

%Vor%

Ohne die leeren xmlns="" funktionierten meine SelectNodes nicht mehr, da der Namespace angegeben werden musste. Lösung dafür ist hier (using-xpath-with-default-namespace)

    
tivo 01.09.2011 12:48
quelle
0

Versuchen Sie:

%Vor%     
iRon 14.04.2016 15:33
quelle
0

Schließlich löste ich diese öffnende XML-Datei und ersetzte alle Vorkommen von xmlns "" durch eine leere Zeichenfolge.

Vielleicht ist es keine elegante Lösung, aber es ist einfach und funktioniert gut.

%Vor%     
LennyBaxter 07.06.2016 03:58
quelle
-1

fügen Sie Ihrem xdoc

Standard-Namespace hinzu     
Dexion 06.12.2010 20:35
quelle

Tags und Links