blob: d298104abea134710b49e9fcdc35df4c53441081 [file] [log] [blame]
// Copyright 2009 Google Inc. All Rights Reserved.
package org.unicode.cldr.icu;
import org.unicode.cldr.util.CLDRFile;
import org.unicode.cldr.util.XPathParts;
// Notes:
// - xpp.set (currently) resets the entire state of the xpp, so there are no side effects
// of these calls.
// - This is not used in a multi-threaded environment, so a static instance is ok. If
// this turns out not to be true, make thread-local.
public class XPPUtil {
public static String getXpathName(String xpath) {
xpp.set(xpath);
return xpp.getElement(-1);
}
public static String getXpathName(String xpath, int pos) {
xpp.set(xpath);
return xpp.getElement(pos);
}
public static String getAttributeValue(String xpath, String element, String attribute) {
xpp.set(xpath);
int el = xpp.findElement(element);
if (el == -1) {
return null;
}
return xpp.getAttributeValue(el, attribute);
}
public static String getAttributeValue(String xpath, String attribute) {
xpp.set(xpath);
return xpp.getAttributeValue(-1, attribute);
}
public static String getBasicAttributeValue(CLDRFile whichFile, String xpath, String attribute) {
String fullPath = whichFile.getFullXPath(xpath);
if (fullPath == null) {
return null;
}
return getAttributeValue(fullPath, attribute);
}
public static String findAttributeValue(CLDRFile file, String xpath, String attribute) {
String fullPath = file.getFullXPath(xpath);
xpp.set(fullPath);
for (int j = 1; j <= xpp.size(); j++) {
String v = xpp.getAttributeValue(0 - j, attribute);
if (v != null)
return v;
}
return null;
}
private static final XPathParts xpp = new XPathParts(null, null);
}