You are viewing a plain text version of this content. The canonical link for it is here.
Posted to j-dev@xerces.apache.org by bu...@apache.org on 2002/12/05 22:58:54 UTC

DO NOT REPLY [Bug 15122] New: - getElementsByTagName() not (or unable) to return Comment or Text nodes

DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15122>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15122

getElementsByTagName() not (or unable) to return Comment or Text nodes

           Summary: getElementsByTagName() not (or unable) to return Comment
                    or Text nodes
           Product: Xerces2-J
           Version: 2.2.1
          Platform: Other
        OS/Version: Other
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: DOM
        AssignedTo: xerces-j-dev@xml.apache.org
        ReportedBy: brettw@riseup.com


I have a DOM of an HTML page, which contains a table.  Inside of the table are
various text and comment elements (along with TR, TD, FONT, and other elements).

I'm doing the following:

1) I locate the table element in the DOM

        /* Find the start of the sub-categories */
        NodeList nodeList = document.getElementsByTagName("table");

        // the forth table contains what we want.  yes this is fragile.
        HTMLTableElement table = (HTMLTableElement)nodeList.item(3);

2) I attempt to find the Comment nodes.  I've tried:

   a) table.getElementsByTagName("#comment")  -- this returns an empty list!
   b) table.getElementsByTagName("!")  -- I saw this being done in a JavaScript
         snippet, but alas, it too returns an empty list.

   c)
        NodeList nodeList = table.getElementsByTagName("*");
        for (int i = 0; i < nodeList.getLength(); i++)
        {
            Node node = nodeList.item(i);
            if (node.getNodeType() == Node.COMMENT_NODE)
                System.out.println("Found a comment node!");
        }

        This never finds a comment node.  However, if I replace the 'if' with
        a simple print like this:

            System.out.println(node.getNodeName() + " : " + node.getNodeType() +
" : " + node.getNodeValue());

        It prints all of the decendents of the table -- with the EXCEPTION of
        text nodes (#text) and comment nodes (#comment).  It was my understanding
        that passing "*" to getElementsByTagName() would return ALL nodes.  It
        does not.

Let me also say that if I pass 'table' to a routine which recurrsively walks the
DOM from there, it does print ALL decendent elements -- including #text and #comment
nodes.  So, I know they're there.

I think the expected behaviors should be:

1) passing "*" to getElementsByTagName() should return ALL decendents.
2) passing "#comment" or "#text" should return a collection of comment and text
nodes respectively.

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-j-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-j-dev-help@xml.apache.org