/* package whatever; // don't place package name! */
import java.util.*;
import java.lang.*;
import java.io.*;
import org.w3c.dom.Document;
import org.xml.sax.InputSource;
import javax.xml.xpath.*;
import javax.xml.parsers.*;
/* Name of the class has to be "Main" only if the class is public. */
class Ideone
{
{
String xmlInputString
= "<root>" + "<something>" +
"<metadata name=\"user\" story=\"{some_text_here}\" extraStory=\"{don't want this}\" />" +
"<metadata name=\"user\" story=\"{some_text_here}\" />" +
"<metadata name=\"notAnUser\" story=\"{maybe_text_here}\" />" +
"</something>" +
"<somethingElse/>" +
"</root>";
DocumentBuilder docBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
XPath x = XPathFactory.newInstance().newXPath();
XPathExpression ex = x.compile("//metadata[@name='user' and @story and count(@*) = 2]/@story");
System.
out.
println(ex.
evaluate(xmlInputDoc
)); }
}
LyogcGFja2FnZSB3aGF0ZXZlcjsgLy8gZG9uJ3QgcGxhY2UgcGFja2FnZSBuYW1lISAqLwoKaW1wb3J0IGphdmEudXRpbC4qOwppbXBvcnQgamF2YS5sYW5nLio7CmltcG9ydCBqYXZhLmlvLio7CmltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOwppbXBvcnQgamF2YXgueG1sLnhwYXRoLio7CmltcG9ydCBqYXZheC54bWwucGFyc2Vycy4qOwoKLyogTmFtZSBvZiB0aGUgY2xhc3MgaGFzIHRvIGJlICJNYWluIiBvbmx5IGlmIHRoZSBjbGFzcyBpcyBwdWJsaWMuICovCmNsYXNzIElkZW9uZQp7CglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbiAoU3RyaW5nW10gYXJncykgdGhyb3dzIGphdmEubGFuZy5FeGNlcHRpb24KCXsKCQlTdHJpbmcgeG1sSW5wdXRTdHJpbmcgPSAiPHJvb3Q+IiArCgkJCQkJCQkJCSI8c29tZXRoaW5nPiIgKwoJCQkJCQkJCQkgICAgIjxtZXRhZGF0YSBuYW1lPVwidXNlclwiIHN0b3J5PVwie3NvbWVfdGV4dF9oZXJlfVwiIGV4dHJhU3Rvcnk9XCJ7ZG9uJ3Qgd2FudCB0aGlzfVwiIC8+IiArCiAgICAJCQkJCQkJCQkiPG1ldGFkYXRhIG5hbWU9XCJ1c2VyXCIgc3Rvcnk9XCJ7c29tZV90ZXh0X2hlcmV9XCIgLz4iICsKICAgIAkJCQkJCQkJCSI8bWV0YWRhdGEgbmFtZT1cIm5vdEFuVXNlclwiIHN0b3J5PVwie21heWJlX3RleHRfaGVyZX1cIiAvPiIgKwogIAkJCQkJCQkJCSI8L3NvbWV0aGluZz4iICsKICAJCQkJCQkJCQkiPHNvbWV0aGluZ0Vsc2UvPiIgKwoJCQkJCQkJCSI8L3Jvb3Q+IjsKCQlEb2N1bWVudEJ1aWxkZXIgZG9jQnVpbGRlciA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKCQkKCQlEb2N1bWVudCB4bWxJbnB1dERvYyA9IGRvY0J1aWxkZXIucGFyc2UobmV3IElucHV0U291cmNlKG5ldyBTdHJpbmdSZWFkZXIoeG1sSW5wdXRTdHJpbmcpKSk7CgkJCgkJWFBhdGggeCA9IFhQYXRoRmFjdG9yeS5uZXdJbnN0YW5jZSgpLm5ld1hQYXRoKCk7CgkJWFBhdGhFeHByZXNzaW9uIGV4ID0geC5jb21waWxlKCIvL21ldGFkYXRhW0BuYW1lPSd1c2VyJyBhbmQgQHN0b3J5IGFuZCBjb3VudChAKikgPSAyXS9Ac3RvcnkiKTsKCQlTeXN0ZW0ub3V0LnByaW50bG4oZXguZXZhbHVhdGUoeG1sSW5wdXREb2MpKTsKCX0KfQ==