Vectorinhalt vergleich in Bedingun

Status
Nicht offen für weitere Antworten.
L

licht

Gast
Hi Leute,

ich habe einen Vector der mit Inhalt bestückt ist. Die Ausgabe per system.out sieht so aus

id=1, url= asdsa.html
id=2, url= asad.html
....

und ich möchte einfach, wenn ich sage wenn id = 1 gib mir die dazugehörige url!

warum macht er das nicht?

Code:
File file = new File("gesamt.xml");
            DocumentBuilder builder =
                    DocumentBuilderFactory.newInstance().newDocumentBuilder();
            Document doc = builder.parse(file);
            NodeList links = doc.getElementsByTagName("link");
            System.out.println("getElement: "+ doc.getElementsByTagName("link"));
            for (int i = 0; i < links.getLength(); i++) {
               linker.removeElement("id="+id);
               linker.removeElement("url="+url);
               linkElement = (Element)links.item(i);
                id = linkElement.getAttribute("id");
                url = linkElement.getAttribute("url");
                linker.add("id="+id);
                linker.add("url="+url);
                System.out.println("linker: "+ linker);
            }
                if (linker.equals("1")){
                    System.out.println("url zu 1: " + url);
                    }else
                        System.out.println("keine url");
            }
 
L

licht

Gast
nuja..das was in linker steht sieht so aus

[[id=1, ddfsdd.html], [id=2, ddf.html], ....]

liegt das an den klammern, dass der da keine id findet???
 

Ariol

Top Contributor
Wenn im Vector [[id=1, ddfsdd.html], [id=2, ddf.html], ....] drinsteht kanns ja nicht funktionieren wenn du auf "1" überprüfst.

Schreib deinen Vector mal so: [[1, ddfsdd.html], [2, ddf.html], ....]
 
L

licht

Gast
So mein Vector sieht jetz so aus wie du es gesagt hast und habe dann wieder keine url gefunden...warum?!
Code:
 if (id.equals("1")){
                    System.out.println("url: "+url);
                }else {
                    System.out.println("keine url");
                }
 
L

licht

Gast
Da bekomm ich ich keine url :(
Code:
Iterator it = vzusammen.iterator();
                  while (it.hasNext()){
                      Object o = it.next();
                
                    if (o.toString().equals("1")){
                        System.out.println("url: "+url);
                    }else{
                        System.out.println("keine url");
                    }
 

mikachu

Top Contributor
iss doch ec:

Code:
public String getURL( int idNumber )
{
   for( Iterator<String> it = yourVector.iterator(); it.hasNext(); )
   {
       String currentElement = it.next();
       if( currentElement.startsWith( "id=" + Integer.parseInt( idNumber ) ) )
       {
           return currentElement.split( "url=" )[1].trim();
       }
   }
   return null; // oder return "";
}
 
L

licht

Gast
danke für die bemühung

"cannot find symbol"
"Symbol: method parseInt(int)"
"location: java.lang.Integer"

was übergibst du den mit idNumber? ist das die id die ich suche?
 

mikachu

Top Contributor
licht hat gesagt.:
danke für die bemühung
np

licht hat gesagt.:
"cannot find symbol"
"Symbol: method parseInt(int)"
"location: java.lang.Integer"
stimmt... damn, das muss Integer.toString( idNumber ); heißen

licht hat gesagt.:
was übergibst du den mit idNumber? ist das die id die ich suche?
ja

Code:
public static void main( String... args )
{
   //...
   String url = xxx.getURL( 1 ); // sollte dann "asdsa.html" liefern
   //...
}

#edit 1:
somit hast du gleich die funktionalität in eine methode abgekapselt, und musst dann nur noch ruhigen gewissens diese methode aufrufen, um die url zu erhalten ;)
 

Ariol

Top Contributor
Code:
File file = new File("gesamt.xml"); 
             DocumentBuilder builder = 
                     DocumentBuilderFactory.newInstance().newDocumentBuilder(); 
             Document doc = builder.parse(file); 
             NodeList links = doc.getElementsByTagName("link"); 
             System.out.println("getElement: "+ doc.getElementsByTagName("link")); 
             for (int i = 0; i < links.getLength(); i++) { 
                linker.removeElement("id="+id); 
                linker.removeElement("url="+url); 
                linkElement = (Element)links.item(i); 
                 id = linkElement.getAttribute("id"); 
                 url = linkElement.getAttribute("url"); 
                 linker.add("id="+id); 
                 linker.add("url="+url); 
                 System.out.println("linker: "+ linker); 
             } 
                 if (linker.equals("id=1")){ 
                     System.out.println("url zu 1: " + url); 
                     }else 
                         System.out.println("keine url"); 
             }

versuchs mal so
 
L

licht

Gast
@mika.fhdw
Code:
if (currentElement.startsWith(Integer.toString(id))
jetz erkennt er die mehtode ....toString nicht!komisch!

@ariol

nein haut auch nicht hin!

aber habe etwas anderes.. in der for schleife, muss da stehen

Link linker = new Linker()!

und die 2 linker dann zusammenfassen in vzusammen

also so

Code:
 File file = new File("gesamt.xml");
            DocumentBuilder builder =
                    DocumentBuilderFactory.newInstance().newDocumentBuilder();
            Document doc = builder.parse(file);
            NodeList links = doc.getElementsByTagName("link");
            System.out.println("getElement: "+ doc.getElementsByTagName("link"));
            for (int i = 0; i < links.getLength(); i++) {
               vlinker = new Vector();
               vzusammen.removeElement(vlinker);
               vlinker.removeElement(id);
               vlinker.removeElement(url);
               linkElement = (Element)links.item(i);
                id = linkElement.getAttribute("id");
                url = linkElement.getAttribute("url");
                vlinker.add(id);
                vlinker.add(url);
                vzusammen.add(vlinker);
                }

                //bestimmte id ansprechen
                  Iterator it = vzusammen.iterator();
                  while (it.hasNext()){
                      Object o = it.next();
                
                    if (o.toString().equals("1")){
                        System.out.println("url: "+url);
                    }else{
                        System.out.println("keine url");
                    }
               
                }
ausgabe per println

[[1, dass.html], [2, asd.html] , ...]

bekomme aber, wenn ich mir die id holen will, weiterhin keine url..wasn das :(?
 
M

Michael...

Gast
Hallo,

wenn ich das richtig deute, handelt es ich um einen Vector(vlinker) in einem Vector oder einer sonstigen Collection(vzusammen). Also muss man erst einmal an den "inneren" Vector rankommen.

In etwa so (nicht getestet):
Code:
Iterator it = vzusammen.iterator(); 
while (it.hasNext()){ 
    Vector vec = (Vector)it.next(); 
    if (vec.get(0).toString().equals("1"))
        System.out.println(vec.get(1).toString()); 
    else
        System.out.println("keine url"); 
}
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben