Doppelte eintraege im Stringbuffer löschen

lara22

Mitglied
Hallo Java Gemeinde,

Wie kann ich doppelte Einträge aus einem StringBuffer löschen?
Ich füge im StringBuffer ein paar Tags ein. Wenn ich diese ausgebe, erscheint jedes Tag zweimal auf.
Beispiel ich füge <hallo>. Als Ausgabe erhalte ich <hallo> <hallo>. Woran kann das liegen.

Ich danke im Voraus.
 
Zeige uns doch einmal einen Ausschnitt aus deinem Code. Du fügst den Tag vermutlich zwei mal ein, von alleine macht das der StringBuffer jedenfalls nicht 🙂

(oder die Ausgabe passt eben nicht...)
 
Zuletzt bearbeitet:
Hehehe 🙂
Code:
StringBuffer stringbuffer = new StringBuffer();
		
for (int i = 0; i < n1.getChildNodes().getLength(); i++) {
			boolean boolean = true;
	
for (int j = 0; j < n2.getChildNodes().getLength(); j++) {
if (n2.getChildNodes().item(j).isEqualNode(n1.getChildNodes().item(i))) {
	boolean = false;
	}}
				
	if (boolean) {
					
  stringbuffer.append( n.getChildNodes().item(i).getNodeName()+ ">"+ n.getChildNodes().item(i).getTextContent() + "</"+ n.getChildNodes().item(i).getNodeName() + ">");

Ich finde es einfach net
 
Zuletzt bearbeitet:
Bitte räume deinen Code mal auf und füge lokale Variablen ein, für:
- die Kinder von n1 und n2
- die Objekte an der Stelle item(i) der Kinder.

Korrigiere bitte zudem die Einrückungen und poste das ganze in
Java:
-Tags. So wie das da steht bin ich nicht bereit mir das auseinander zu puzzeln.
 
Zuletzt bearbeitet:
So ich poste mal den Code.

Code:
private boolean isIgnoredDifference(Difference difference) {

if (difference.getControlNodeDetail().getNode() != null
                         && difference.getTestNodeDetail().getNode() != null) {

  int a = difference.getControlNodeDetail().getNode().getChildNodes().getLength();
  int b = difference.getTestNodeDetail().getNode().getChildNodes().getLength();


if (a != b) {

	Node n= difference.getControlNodeDetail().getNode();
	Node n1 = difference.getTestNodeDetail().getNode();
               
               extraCompare(n);
                         
                        return false;
			}

if (difference.getControlNodeDetail().getNode().getParentNode()
				.getParentNode().getChildNodes().getLength() == difference
					.getTestNodeDetail().getNode().getParentNode()
					.getParentNode().getChildNodes().getLength()) {

	for (String s : exceptions) {

                    if (difference.getControlNodeDetail().getXpathLocation() == null
			     || difference.getTestNodeDetail().getXpathLocation() == null) {
                                                                             return false;
					}

		if (s != null) {
                                     if (!s.equals("")&& difference.getControlNodeDetail()
						.getXpathLocation().startsWith(s)) {
							return true;
						}
					}
				}

		            int differenceId = difference.getId();
		            for (int i = 0; i < IGNORE_VALUES.length; ++i) {
		           if (differenceId == IGNORE_VALUES[i]) {
						return true;
					}
				}
				return false;
			} else {

				return true;

			}
		}
		return true;
	}


	public int differenceFound(Difference difference) {
		if (isIgnoredDifference(difference)) {
			return RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL;
		} else {
			return RETURN_ACCEPT_DIFFERENCE;
		}
	}


	public void skippedComparison(Node control, Node test) {

	}

	private void extraCompare(Node n) {

		StringBuffer stringbuffer = new StringBuffer();

		for (int i = 0; i < n.getChildNodes().getLength(); i++) {

			boolean Boolean = true;

			for (int j = 0; j < n1.getChildNodes().getLength(); j++) {

				if (n1.getChildNodes().item(j)
						.isEqualNode(n.getChildNodes().item(i))) {

					Boolean = false;

				}

			}

			if (Boolean) {

		stringbuffer.append(n.getChildNodes().item(i).getNodeName(
                                                             + n.getChildNodes().item(i).getAttribute() .getNamedItem("NAME") + ">"   + n.getChildNodes().item(i).getTextContent() 
					  + n.getChildNodes().item(i).getNodeName() + ">");

			}

		}

		System.out.println(stringbuffer.toString());

	}
		
	}

Im der Methode extracompare mach ich eine weiter Überprüfung. Es funktioniert auch , nur in der Ausgabe wird es doppelt ausgegeben :/
 
Zuletzt bearbeitet:

Zurück
Oben