Avatar billede anders_stigaard Nybegynder
31. juli 2007 - 13:15 Der er 2 kommentarer og
1 løsning

Fjerne tomme linjer i W3C DOM document

Jeg har en XML fil som inde holder følgende:

....
....

<Managers>
    <Manager Class="klasse1"/>
    <Manager Class="klasse2"/>
    <Manager Class="klasse3"/>
    <Manager Class="klasse4"/>
</Managers>

....
....

Jeg har så en metode der skal kunne slette en Manager fra Documentet/XML filen...
Mit problem ligger i at når jeg fjerne en manager efter lader det en tom linje.. dette har jeg så løst ved at gøre følgende:

if(typeNodeList.item(i).getAttributes().getNamedItem("Class").getNodeValue().equals(className)){         typesNodeList.item(0).removeChild(typeNodeList.item(i).getNextSibling());        typesNodeList.item(0).removeChild(typeNodeList.item(i));
return true;
}
hvor jeg med getNextSibling() får fjernet den "tab der er foran"..  Mit problem er dog at dette stadig nogen gange fejler. Derfor ville det være meget lækkert hvis nogen havede en løsning.. F.eks. ved en måde at fjerne alle tomme linjer fra DOM documentet inden den skrives til XML igen..

Jeg vil nemlig gerne ende ud med helt ens opbyggede XML documenter(hvilket man også forventer når man kigger i et XML træ!) som evt. skal sammenlignes! 

Håber i forstår mit problem og nogen kan hjælpe!
Avatar billede arne_v Ekspert
08. august 2007 - 01:10 #1
Hvordan udskriver du ?
Avatar billede anders_stigaard Nybegynder
08. august 2007 - 14:30 #2
Jeg har løst mit problem!

Inden jeg sletter en node sletter jeg de noder der findes før denne af typen DeferredTextImpl..

//Delete the previous Node.. As long it is not null, ant it is a type 3 Node(a DeferredTextImpl, only contains text as \n and \t).!
                    while(typeNodeList.item(i).getPreviousSibling()!=null && typeNodeList.item(i).getPreviousSibling().getNodeType()==3) {
                        typesNodeList.item(0).removeChild(typeNodeList.item(i).getPreviousSibling());
                    }                   
                    typesNodeList.item(0).removeChild(typeNodeList.item(i));
                    return true;
Avatar billede anders_stigaard Nybegynder
08. august 2007 - 14:31 #3
//Delete the previous Node.. As long it is not null, ant it is a type 3 Node(a //DeferredTextImpl, only contains text as \n and \t).!
 
while(typeNodeList.item(i).getPreviousSibling()!=null && 
        typeNodeList.item(i).getPreviousSibling().getNodeType()==3) {
                         
  typesNodeList.item(0).removeChild(typeNodeList.item(i).getPreviousSibling());
}                 

typesNodeList.item(0).removeChild(typeNodeList.item(i));
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester