Goedemiddag,
Ik heb een XML-string, waar ik een tag uit verwijderd wil hebben. Ik kan geen gebruik maken van SimpleXML, omdat het formaat exact gelijk moet blijven.
De oplossing is denk ik door gebruik te maken van de preg_replace functie. Maar ik ben op zoek naar het goed pattern. Ik wil dus de <tag>inhoud</tag> weghebben, helemaal dus. De inhoud van deze tag is variabel dus vandaar dat het op deze manier moet.
Ik hoop dat iemand wat inspiratie heeft :-)
Wat is er mis met DOM? Dat is gemaakt voor het bewerken van XML.
XML => inlezen in DOM => bewerken => XML
omdat het formaat exact gelijk moet blijven.
Dat is natuurlijk onzin, je opent dit topic omdat je juist niet hetzelfde formaat wilt hebben... Anders zou je niets hoeven te verwijderen.
En over verwijderen gesproken, waarom zou je een tag willen verwijderen? Het zit niemand echt in de weg, gewoon niet gebruiken en klaar is kees. Dat is nu net één van de pluspunten van XML, je kunt eenvoudig aanwijzen wat je wel en niet wilt gebruiken.
Ps. preg_replace slaat nergens op wanneer je met XML aan het werk bent, er zijn genoeg XML-functies die vele malen handiger zijn. En jouw XML intact laten.
Dankje Frank, maar in dit geval heb ik toch wel gelijk. In mijn geval moet de xml die binnenkomt gelijk blijven, omdat het op andere plaatsen anders wordt gelezen, dus niet netjes door er een DOM object van te maken. Als je van een XML string een simpleXML object maakt en het weer omzet naar een string met de functie asXML() worden lege tags omgezet naar <tag/> dit is helemaal juist natuurlijk, maar nogmaals: in mijn geval moet alles gelijk blijven. Ik kan er niets aan doen, het is nu eenmaal zo.
Ik ben dus op zoek naar een pattern wat een tag inclusief zijn inhoud verwijderd.
Ik heb een XML-string, waar ik een tag uit verwijderd wil hebben.
Dat gaat dus niet lukken. Je kunt onmogelijk dezelfde XML houden en ondertussen een deel van de XML verwijderen. Gaat niet.
Wanneer jij de ene XML wilt omzetten naar de andere XML, gebruik dan XSLT, dat is er voor gemaakt. De T staat voor Transformeren.
Maar geef eens een voorbeeldje of een url naar de XML, dan kunnen we even kijken hoe je snel en simpel een stuk eruit kunt slopen. En vergeet het verhaal dat de XML hetzelfde moet blijven, dat gaat niet. De structuur kan uiteraard wel hetzelfde blijven, dat kun je met XSD controleren.
Ok, vergeet even helemaal het woordje XML. Ik weet wat er allemaal mogelijk is met XSD en XSLT. Maar ik het een string waarin 'toevallig' XML tags staan. Ik wil dus de string <tag>waarde</tag> weghebben uit een string.
Je kunt toch ook met dom een node weghalen....
Verder snap ik niet waarom je niet met dom wilt gaan werken, als je raar gaat doen met regex'en enzo dan krijg je volgens mij alleen maar meer problemen.
Tja, DOM is gemaakt om XML te bewerken, het verwijderen van een node is dan ook standaard werk. Wellicht is gepruts met een regex wel een requirement, geen idee.
Jammer van de oplossing die hier ligt, maar dat is een DOM-oplossing en die wil je blijkbaar niet hebben.
Ik vind het erg jammer dat je zo reageert. Ik heb twee keer aangegeven dat het niet kan door DOM, maar dat ik op zoek ben naar een regex. Ik snap ook wel dat dit gepruts is, maar dat is mijn probleem. Verder geen kritiek, want je hebt zeker wel kennis van zaken.
Hieronder de code die ik kan gebruiken:
Dis wat ik wil, maar.... het is van belang dat de tag die ik toevoeg Vooraan komt te staan en er niet achter. Denk nu niet meteen dat dit niet uitmaakt. Deze xml wordt op andere plaatsen op hele andere manieren uitgelezen, dus de plaats van een tag is wel degelijk van belang. Ik besef me dat dit de kracht van XML bijna nihil maakt, maar het is nu eenmaal zo. Verder wordt door de functie asXML de XML als echte goede XML omgezet, dus lege tags worden <legetag /> dit is juist, maar is niet wat ik wil.
Dus komop Frank, denk niet even in één richting! Dat is gewoon niet mogelijk.