"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

XML Editor gesucht

herky 15.06.2012 - 10:43 1231 9
Posts

herky

natürlicher fressfeind
Avatar
Registered: Feb 2001
Location: im tiefen loch
Posts: 910
hi leute,

ich suche einen XML editor mit dem ich:

* große XML datein bearbeiten (bis 20mb)
* ungewollte nodes / tags entfernen (zB alle vorkommen <unnoetig> und seine sub tags entfernen)

hab bislang leider kaum was brauchbares gefunden

greets,

herky

quilty

Ich schau nur
Avatar
Registered: Jul 2005
Location: 4202
Posts: 3065
also jeden den ich kenne und zu dem thema gefragt wird spuckt reflexartig "altova xmlspy" aus. ist noch immer die referenz wenn es um xml bearbeitung/verarbeitung geht.

herky

natürlicher fressfeind
Avatar
Registered: Feb 2001
Location: im tiefen loch
Posts: 910
hm ... 399€ ? ... seriously ^^

danke für die super schnelle antwort, aber kennt eventuell jemand etwas als donate-ware oder wenn unterhalb von 100€?

greets,

herky

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25453
Altova XMLSpy ist meiner Meinung nach die ausgefeilteste Lösung. Gibt übrigens auch jemanden hier im Forum, der für Altova tätig ist/war. ;)

Kostenlose Alternative ist "Serna Free":

click to enlarge

http://www.syntext.com/products/serna-free/

herky

natürlicher fressfeind
Avatar
Registered: Feb 2001
Location: im tiefen loch
Posts: 910
thx für die vorschläge - wenn mir noch wer sagen kann ob und wie ich mit altova ungewollte nodes entfernen kann? ich find dazu einfach nichts brauchbares :-(

greets

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25453
XMLSpy hat eine sehr ausführliche Anleitung:

Zitat
Removing nodes

A node can be removed if its removal does not render the document invalid. Removing a node causes a node and all its contents to be deleted. A node can be removed using the Remove command in the context menu. When the Remove command is highlighted, a submenu pops up which contains all nodes that may be removed, starting from the selected node and going up to the document's top-level node. To select a node for removal, the cursor can be placed within the node, or the node (or part of it) can be highlighted. In the Elements entry helper, nodes that can be removed are indicated with the [x-] icon. A removable node can also be removed by selecting it and pressing the Delete key. In the NanonullOrg.xml document, experiment with removing a few nodes using the mechanisms described. You can undo your changes with Ctrl+Z.

Link: manual.altova.com

herky

natürlicher fressfeind
Avatar
Registered: Feb 2001
Location: im tiefen loch
Posts: 910
danke mat - leider ist das nicht was ich suche - ein vorkommen eines nodes zu löschen ist echt kein problem. ich möchte aber alle spezifischen in einem XML dokument vorkommenden nodes löschen können.

bsp.: alle size nodes löschen in:

Code:
<imgs>
	<size />
	<file>
		<id />
		<size >
			blabla
		</size>
	</file>
	<file>
		<id />
		<size >
			blabla
		</size>
	</file>
	<file>
		<id />
		<size >
			blabla
		</size>
	</file>
</imgs>

zu:

Code:
<imgs>
	<file>
		<id />
	</file>
	<file>
		<id />
	</file>
	<file>
		<id />
	</file>
</imgs>

aber eben in einem 20 mb großen file. das manuell OHNE fehler zu machen ist nicht wirklich gut möglich.

greets

sts


Registered: Feb 2008
Location: Lima
Posts: 197
Diese Anforderung sollte sich ja auch relativ einfach umsetzen alssen, denke da an eine C# Windows Forms Application...

melde dich bei mir falls Du noch keine Lösung gefunden hast :)

-=Willi=-

The Emperor protects
Avatar
Registered: Aug 2003
Location: ~
Posts: 1624
Hier eine Zeile für Bash:
Code:
sed -e 's/<size\s*>.*<\/size\s*>//' -e '/<size\s*>/,/<\/size\s*>/ s/.*//' -e '/^\s*$/d' <in.xml >out.xml
Wahrscheinlich umständlicher gelöst als es möglich wär aber es gibt auch keine Gewähr drauf :D. Ich habs zumindest mit deinem Beispiel oben getestet und auch mit einzeiligen Tags (<size>bla</size>;).

that

Hoffnungsloser Optimist
Avatar
Registered: Mar 2000
Location: MeidLing
Posts: 11340
Sowas macht man am besten mit einem XSLT-Script:

Code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="size"/>
  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

Das erste Template macht aus "size"-Elementen gar nichts, und das zweite kopiert alle Attribute und Elemente 1:1 weiter.

XSLT-Engines, die so ein Script ausführen können, gibts inzwischen wirklich viele - eine davon u.a. im XMLSpy, eine in .NET, eine im normalen Windows (erreichbar über COM, z.B. über ein kleines Scripting-Host-Script), in libxslt, im Browser, etc.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz