Frank: Eigener XML-Baum für DOM-Zugriff

Hallo!

Ich hätte gerne innerhalb eines selbst erstllen Objekts einen XML-Attribut gespeichert und dann auch mit einer (private) Methode angesprochen.
Wie Objekte und Methoden in JS erstellt werden ist mir soweit klar. Nur habe ich mit dem XML-Attribut Probleme.
Ich habe hier mal einen Ausschnitt:

var h1 = "<hierarchie1>" +
  "<hierarachie2 name="test1" >" +
         "</hierarchie1>";
var name = h1.getElementsByTagName("hierarachie2[0].getAttribute("name");

Das geht natürlich nicht, da nur document die Methode getElementsByTagName kennt.
Gibt es trotzdem eine Möglichkeit, wie ich das realisieren könnte?

Gruß
Frank

  1. Hallo Frank.

    var h1 = "<hierarchie1>" +

    "<hierarachie2 name="test1" >" +
             "</hierarchie1>";
    var name = h1.getElementsByTagName("hierarachie2[0].getAttribute("name");

    
    >   
    > Das geht natürlich nicht, da nur document die Methode getElementsByTagName kennt.  
      
    Nein, das stimmt nicht. Besagte Methode steht jedem HTML-Element zur Verfügung.  
      
    Doch der Inhalt von h1 ist lediglich eine Zeichenkette; dass diese nicht über DOM-Methoden verfügen kann, sollte klar sein.  
      
    Was du vermutlich eher möchtest, ist <http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=createElement> und <http://de.selfhtml.org/javascript/objekte/node.htm#append_child@title=appendChild>. Damit kannst du Elementobjekte erzeugen, welche über die getElementsByTagName-MEthode verfügen.  
      
    BTW:  
      
    
    > `var name = h1.getElementsByTagName("hierarachie2[0].getAttribute("name");`{:.language-javascript}  
      
    Vom Syntaxfehler einmal abgesehen ginge dies auch einfacher:  
      
    `var name = h1.getElementsByTagName('hierarachie2')[0].name;`{:.language-javascript}  
      
      
    Einen schönen Freitag noch.  
      
    Gruß, Mathias  
    
    -- 
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|  
    „It is required that HTML be a common language between all platforms. This implies no device-specific markup, or anything which requires control over fonts or colors, for example. This is in keeping with the SGML ideal.“  
    [[HTML Design Constraints: Logical Markup](http://www.w3.org/History/19921103-hypertext/hypertext/WWW/MarkUp/HTMLConstraints.html)]
    
    1. Ja, vielen Dank Mathias. Ich schreibe schon gerade daran.
      Meld mich nochmal falls es Probleme gibt.

      Gruß
      Frank

      Hallo Frank.

      var h1 = "<hierarchie1>" +

      "<hierarachie2 name="test1" >" +
               "</hierarchie1>";
      var name = h1.getElementsByTagName("hierarachie2[0].getAttribute("name");

      
      > >   
      > > Das geht natürlich nicht, da nur document die Methode getElementsByTagName kennt.  
      >   
      > Nein, das stimmt nicht. Besagte Methode steht jedem HTML-Element zur Verfügung.  
      >   
      > Doch der Inhalt von h1 ist lediglich eine Zeichenkette; dass diese nicht über DOM-Methoden verfügen kann, sollte klar sein.  
      >   
      > Was du vermutlich eher möchtest, ist <http://de.selfhtml.org/javascript/objekte/document.htm#create_element@title=createElement> und <http://de.selfhtml.org/javascript/objekte/node.htm#append_child@title=appendChild>. Damit kannst du Elementobjekte erzeugen, welche über die getElementsByTagName-MEthode verfügen.  
      >   
      > BTW:  
      >   
      > > `var name = h1.getElementsByTagName("hierarachie2[0].getAttribute("name");`{:.language-javascript}  
      >   
      > Vom Syntaxfehler einmal abgesehen ginge dies auch einfacher:  
      >   
      > `var name = h1.getElementsByTagName('hierarachie2')[0].name;`{:.language-javascript}  
      >   
      >   
      > Einen schönen Freitag noch.  
      >   
      > Gruß, Mathias  
      >