user2816085
user2816085

Reputation: 655

Xpath for xml search

I have xml file that I want to search for a word say searchTearm and then want to return names of tags surrounding that search term. ex :- in below case searchTerm is surrounded by tags namespace, querySubject and queryItem, I am trying to return name of these tags. Name is enclosed in name tag.

Any help with single line xpath for this:

<namespace>
    <name locale="en">Test</name>
    <lastChanged>2016-01-12T12:42:46</lastChanged>
        <namespace><name locale="en">Database Layer</name>
            <querySubject status="valid"><name locale="en">qsxyz</name>
                <queryItem><name locale="en">qixyz</name>
                    <>...searchTerm..</>
                </queryItem>
            </querySubject>
        </namespace>
 </namespace>

below xpath doesn't seem to work :-

/namespace/namespace/querysubject/queryItem[contains(., 'searchTerm')]

Upvotes: 1

Views: 74

Answers (1)

splash58
splash58

Reputation: 26153

if i understood correctly

/namespace/namespace/querySubject/queryItem[contains(., 'searchTerm')]/ancestor-or-self::*/name

selects name tags for all ancestor of queryItem with searchTerm

result

Element='<name locale="en">Test</name>'
Element='<name locale="en">Database Layer</name>'
Element='<name locale="en">qsxyz</name>'
Element='<name locale="en">qixyz</name>'

if you add trailing /text() you will receive not elements but there values

Upvotes: 1

Related Questions