Benutzer mit den meisten Antworten
XML - datei mit Powershell bearbeiten und ein Abschnitt löschen

Frage
-
Hallo Community,
ich habe ein kleines Problem wo ich keine Lösung finde!
Ich habe eine XML Datei. wo ich den Abschnitt "PromptedSubscribers" löschen muss.
***XML - Datei *****************************************************************
<?xml version="1.0" encoding="UTF-8"?>
-<DocItemSet xmlns="urn:schema:Microsoft.Rtc.Management.Xds.AppLayer.2008">
+<DocItem OwnerPool="ServerID" Owner="ServerID" Signature="SIGID" ItemId="ItemID" Name="urn:confs:UserID">
+<DocItem OwnerPool="ServerID" Owner="ServerID" Signature="SIGID" ItemId="ItemID" Name="urn:confs:UserID">
-<DocItem OwnerPool="ServerID" Owner="ServerID" Signature="SIGID" ItemId="ItemID" Name="urn:confs:UserID">
-<Data>
-<HomedResource xmlns="http://schemas.microsoft.com/RtcServer/2002/11/dbimpexp" <Infos>
+<ContactGroups>
+<Contacts>-<PromptedSubscribers>
<PromptedSubscriber> </PromptedSubscriber>
<PromptedSubscriber> </PromptedSubscriber>
<PromptedSubscriber> </PromptedSubscriber>
<PromptedSubscriber/>
<PromptedSubscriber> </PromptedSubscriber>
<PromptedSubscriber> </PromptedSubscriber>
</PromptedSubscribers>+<Containers>
-<Delegates>
<Delegate*********************************************************************
hier ist ein Teil das Scriptes
## XML datei Bearbeiten
$xmlDoc = New-Object XML
$xmlDoc.Load($extractFile)
$xmlDoc.DocumentElement.DocItem.SyncRoot.SyncRoot.data.homedresource.PromptedSubscribers.PromptedSubscriber
$xmlDoc.DocumentElement.DocItem.SyncRoot.SyncRoot.data.homedresource.Remove("PromptedSubscribers")nach dem Ausführen erhalte ich diese Fehlermeldung
Ausnahme beim Aufrufen von "Remove" mit 1 Argument(en): "Die Liste hatte eine feste Größe."
In Zeile:1 Zeichen:1
+ $xmlDoc.DocumentElement.DocItem.SyncRoot.SyncRoot.data.homedresource. ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : NotSupportedExceptionWie kann ich diesen Abschnitt löschen??
Gruß
Stefan
Antworten
-
Hi,
ich kann oben nicht klar erkennen welchen Pfad der Knoten hat, den du löschen willst, daher ein Beispiel anhand einer generischen XML-Struktur:
<?xml version="1.0" encoding="UTF-16"?> <Knoten1> <Unterknoten1> <Element></Element> </Unterknoten1> <Unterknoten2> <Element></Element> </Unterknoten2> </Knoten1>
Wenn du hier jetzt Unterknoten1 löschen wollen würdest, geht das so:
$node = $xmlDoc.Knoten1.SelectSingleNode("Unterknoten1") $node.ParentNode.RemoveChild($node)
Benutze doch bitte in Zukunft den "Codeblock-Einfügen"-Button für Code und Xml Dateien.
Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
(Schneller, besser + komfortabler scripten.)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.- Bearbeitet Denniver ReiningMVP, Moderator Montag, 7. Dezember 2015 15:44
- Als Antwort vorgeschlagen David das Neves Donnerstag, 10. Dezember 2015 14:30
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 10. Dezember 2015 23:05
Alle Antworten
-
Hi,
ich kann oben nicht klar erkennen welchen Pfad der Knoten hat, den du löschen willst, daher ein Beispiel anhand einer generischen XML-Struktur:
<?xml version="1.0" encoding="UTF-16"?> <Knoten1> <Unterknoten1> <Element></Element> </Unterknoten1> <Unterknoten2> <Element></Element> </Unterknoten2> </Knoten1>
Wenn du hier jetzt Unterknoten1 löschen wollen würdest, geht das so:
$node = $xmlDoc.Knoten1.SelectSingleNode("Unterknoten1") $node.ParentNode.RemoveChild($node)
Benutze doch bitte in Zukunft den "Codeblock-Einfügen"-Button für Code und Xml Dateien.
Grüße, Denniver
Blog: http://bytecookie.wordpress.com
Kostenloser Powershell Snippet Manager v4: Link ! Neue Version !
(Schneller, besser + komfortabler scripten.)
Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
Warum das Ganze? Hier gibts die Antwort.- Bearbeitet Denniver ReiningMVP, Moderator Montag, 7. Dezember 2015 15:44
- Als Antwort vorgeschlagen David das Neves Donnerstag, 10. Dezember 2015 14:30
- Als Antwort markiert Denniver ReiningMVP, Moderator Donnerstag, 10. Dezember 2015 23:05
-
-
Hallo Denniver,
leider hat das nicht funktioniert. Ich bekomme immer die FehlerMeldung
Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat. In Zeile:1 Zeichen:1 + $node = $xml.DocumentElement.DocItem.SyncRoot.SyncRoot.data.homedreso ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
das ist die XML-Datei
$data = @' <?xml version="1.0" encoding="utf-8"?> <DocItemSet xmlns="urn:schema:Microsoft.Rtc.Management.Xds.AppLayer.2008"> <DocItem> <Data> <HomedResource> <Conferences> </Conferences> </HomedResource> </Data> </DocItem> <DocItem> <Data> <HomedResource> <Containers> <Container> <Publication> <Data></Data> </Publication> </Container> </Containers> </HomedResource> </Data> </DocItem> <DocItem> <Data> <HomedResource> <ContactGroups> <ContactGroup Number="1" DisplayName="fg==" /> </ContactGroups> <Contacts> <Contact> </Contact> </Contacts> <PromptedSubscribers> <PromptedSubscriber> <Context></Context> </PromptedSubscriber> <PromptedSubscriber> <Context></Context> </PromptedSubscriber> <PromptedSubscriber> <Context></Context> </PromptedSubscriber> </PromptedSubscribers> <Containers> </Containers> <Delegates> </Delegates> </HomedResource> </Data> </DocItem> <DocItem> <Data> <HomedResource> <Certificates> </Certificates> </HomedResource> </Data> </DocItem> </DocItemSet> '@
hier noch die Powershell Befehle
$xmldoc = New-Object -TypeName XML $xmldoc.LoadXml($data) $node = $xmldoc.DocumentElement.DocItem.SyncRoot.SyncRoot.data.homedresource.PromptedSubscribers.SelectSingleNode("PromptedSubscriber") $node.parentnode.RemoveChild($node)
Gruß
Stefan
- Bearbeitet Stefan Planer Freitag, 11. Dezember 2015 07:20