XML - Nodes eines kompletten Namespaces entfernen
Hallo,
ich benötige Hilfe bei folgenden Problem. Ich möchte aus einer XML alles Nodes eines bestimmten Namespaces komplett entfernen.
Entfernt werden sollen alle Nodes, die mit "itunes" beginnen.
Leider komme ich mit den Anleitungen, die sich ergooglen lassen, nicht besonders weit.
Ich wollte es mit einem Batch-Schnipsel entfernen, allerdings fällt die Batch bei den Node mit Zeilenumbruch auf die Nase, weil sie nur ganze Zeilen löscht, die mit "<itunes" beginnen und somit der Rest ind den folgenden Zeilen stehen bleibt.
Ich hoffe, Ihr könnt mir helfen.
Grüße
pappkamerad
ich benötige Hilfe bei folgenden Problem. Ich möchte aus einer XML alles Nodes eines bestimmten Namespaces komplett entfernen.
Entfernt werden sollen alle Nodes, die mit "itunes" beginnen.
Leider komme ich mit den Anleitungen, die sich ergooglen lassen, nicht besonders weit.
<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
<channel>
<title>Podcast</title>
<link>https://www.podcast.de/podcasts/podcast--100.html</link>
<itunes:summary>Podcasts.</itunes:summary>
<description>PodcastsHuhu.</description>
<lastBuildDate>Mon, 30 Jul 2018 21:26:44 +0200</lastBuildDate>
<language>de-de</language>
<image>
<url>http://www.podcasts.de/podcasts/podcast.jpg</url>
<title>Podcasts</title>
<link>https://www.podcasts.de/podcasts/podcast--100.html</link>
<width>144</width>
<height>144</height>
</image>
<itunes:image href="http://www.podcasts.de/podcasts/podcast.jpg" />
<itunes:keywords>podcast, comedy, humor, lustig</itunes:keywords>
<itunes:subtitle>Podcasts.</itunes:subtitle>
<itunes:block>false</itunes:block>
<itunes:category text="Comedy" />
<itunes:owner />
<itunes:explicit>no</itunes:explicit>
<item>
<title>Podcast01</title>
<pubDate>Mon, 30 Jul 2018 21:26:06 +0200</pubDate>
<description>Text...</description>
<link>https://www.podcasts.de/podcasts/podcast/audio-781110.html</link>
<dc:creator>ICH</dc:creator>
<enclosure url="https://podcasts.de/podcasts/podcast01.mp3" length="2221750" type="audio/mpeg" />
<itunes:explicit>no</itunes:explicit>
<itunes:subtitle>Podcast01...</itunes:subtitle>
<itunes:summary>Podcast01...</itunes:summary>
<itunes:duration>00:01:09</itunes:duration>
<itunes:keywords>Podcast, Comedy</itunes:keywords>
<guid isPermaLink="false">e9af2673-c452-499e-935b-5027af526a30</guid>
</item>
<item>
<title>Podcast02</title>
<pubDate>Wed, 03 Jan 2018 22:51:58 +0100</pubDate>
<description>Podcast02:
1. Aufhören, Listen für alles anzulegen
B. Konsequenter werden
7. Zählen lernen...</description>
<link>https://podcasts.de/podcasts/podcast/audio-589276.html</link>
<dc:creator>ICH</dc:creator>
<enclosure url="https://podcasts.de/podcasts/podcast02.mp3" length="2965415" type="audio/mpeg" />
<itunes:explicit>no</itunes:explicit>
<itunes:subtitle>Podcast02:
1. Aufhören, Listen für alles anzulegen
B. Konsequenter werden
7. Zählen lernen...</itunes:subtitle>
<itunes:summary>Podcast02:
1. Aufhören, Listen für alles anzulegen
B. Konsequenter werden
7. Zählen lernen...</itunes:summary>
<itunes:duration>00:01:32</itunes:duration>
<itunes:keywords>Podcast, Comedy</itunes:keywords>
<guid isPermaLink="false">3641f206-a9a7-408b-aea5-4f17d5b7280e</guid>
</item>
</channel>
</rss>
Ich wollte es mit einem Batch-Schnipsel entfernen, allerdings fällt die Batch bei den Node mit Zeilenumbruch auf die Nase, weil sie nur ganze Zeilen löscht, die mit "<itunes" beginnen und somit der Rest ind den folgenden Zeilen stehen bleibt.
Ich hoffe, Ihr könnt mir helfen.
Grüße
pappkamerad
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 381967
Url: https://administrator.de/contentid/381967
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
6 Kommentare
Neuester Kommentar
Moin,
guck mal hier:
http://jon.netdork.net/2013/01/09/removing-xml-elements-using-powershel ...
hth
Erik
guck mal hier:
http://jon.netdork.net/2013/01/09/removing-xml-elements-using-powershel ...
hth
Erik
Für so ne einfache Aufgabe würde ich zwar direkt XSLT für benutzen aber wenn's ein Skript sein soll... als Powershell:
Grüße Uwe
$xmlfile = 'D:\demo.xml'
$xml = New-Object XML
$xml.Load($xmlfile)
$xml.SelectNodes('/rss/channel//*') | ?{$_.NamespaceURI -eq 'http://www.itunes.com/dtds/podcast-1.0.dtd'} | %{$_.ParentNode.RemoveChild($_) | out-null}
$xml.DocumentElement.RemoveAttribute('xmlns:itunes')
$xml.Save('D:\demo_new.xml')
Moin,
Das ist doch nahezu der gleiche Code wie der von Uwe.
Liebe Grüße
Erik
Zitat von @pappkamerad:
Man ich hab jetzt 2 Tage vor dem Problem gestanden und dann ist die Lösung doch wieder so simpel. Vielen Dank Uwe!
@eriko: Das hatte ich auch gefunden, es ist mir aber nicht gelungen auf meinen Fall anzuwenden.
Man ich hab jetzt 2 Tage vor dem Problem gestanden und dann ist die Lösung doch wieder so simpel. Vielen Dank Uwe!
@eriko: Das hatte ich auch gefunden, es ist mir aber nicht gelungen auf meinen Fall anzuwenden.
Das ist doch nahezu der gleiche Code wie der von Uwe.
Liebe Grüße
Erik