The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > org.w3c.dom  [30 examples] > XPath  [5 examples]

e1078. Finding Elements by Attributes in a DOM Document Using XPath

XPath is an expression language for selecting nodes in an XML file. See e1074 Finding Elements by Absolute Location in a DOM Document Using XPath for common XPath expression for selecting elements. This example adds to those examples by demonstrating the ability to select elements based on their attributes.

This example demonstrates some common uses of expressions that use attributes; for more information on XPath, see the specification at http://www.w3c.org/TR/xpath. In the example, the result of an XPath expression is shown next to the expression; the numbers are ids of elements in the sample file shown at the end of the example.

    // Get all elements where pet equals cat
    String xpath = "//*[@pet='cat']";                // 2
    
    // Get all elements where pet equals dog
    xpath = "//*[@pet='dog']";                       // 7
    // Note that element #3 does not match because the attribute
    // value is " dog " rather than "dog"
    
    // Get all elements where pet contains the string dog
    xpath = "//*[contains(@pet,'dog')]";             // 3 7
    
    // Get all elements that have the age attribute
    xpath = "//*[@age]";                             // 3 6
    
    // Get all elem1 elements that have the age attribute
    xpath = "//elem1[@age]";                         // 3
    
    // Get all elements that have both pet and age attributes
    xpath = "//*[@pet and @age]";                    // 1 3
XPath 1.0 does not support case-insensitive matches. However, a simple case-insensitive match can be done using the translate() function, which converts a string by mapping one character into another:
    // Get all elements where pet contains the string cat, ignoring case
    xpath = "//*[contains(translate(@pet,'abcdefghijklmnopqrstuvwxyz',"
        + " 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'),'CAT')]";  // 2 4
To execute an XPath expression, see e1074 Finding Elements by Absolute Location in a DOM Document Using XPath. Here is the sample XML file used in the example:
    <?xml version="1.0" encoding="UTF-8"?>
    <root id="1">
        <elem1 id="2" pet="cat"/>
        <elem1 id="3" pet=" dog " age="8"/>
        <elem1 id="4" pet="Cat" >
            <elem2 id="5">
                <elem3 id="6" age="10"/>
            </elem2>
        </elem1>
        <elem1 id="7" pet="dog"/>
    </root>

 Related Examples
e1074. Finding Elements by Absolute Location in a DOM Document Using XPath
e1075. Selecting from a Set of Child Elements in a DOM Document Using XPath
e1076. Finding Elements by Content in a DOM Document Using XPath
e1077. Finding Elements by Id in a DOM Document Using XPath

See also: Adding and Removing Nodes    Element Attributes    Elements    Getting Nodes    Text Nodes   


© 2002 Addison-Wesley.