\r
public static String prefix = "http://www.TianoCore.org/2006/Edk2.0";\r
\r
- // /\r
- // / Contains name/value pairs of Surface Area document object. The name is\r
- // / always the top level element name.\r
- // /\r
+ //\r
+ // Contains name/value pairs of Surface Area document object. The name is\r
+ // always the top level element name.\r
+ //\r
private static Map<String, XmlObject> map = null;\r
\r
- // /\r
- // / mapStack is used to do nested query\r
- // /\r
+ //\r
+ // mapStack is used to do nested query\r
+ //\r
private static Stack<Map<String, XmlObject>> mapStack = new Stack<Map<String, XmlObject>>();\r
\r
- // /\r
- // / prefix of name space\r
- // /\r
+ //\r
+ // prefix of name space\r
+ //\r
private static String nsPrefix = "sans";\r
\r
- // /\r
- // / xmlbeans needs a name space for each Xpath element\r
- // /\r
+ //\r
+ // xmlbeans needs a name space for each Xpath element\r
+ //\r
private static String ns = null;\r
\r
- // /\r
- // / keep the namep declaration for xmlbeans Xpath query\r
- // /\r
+ //\r
+ // keep the namep declaration for xmlbeans Xpath query\r
+ //\r
private static String queryDeclaration = null;\r
\r
+ private static StringBuffer normQueryString = new StringBuffer(4096);\r
+ private static Pattern xPathPattern = Pattern.compile("([^/]*)(/|//)([^/]+)");\r
+\r
/**\r
* Set a Surface Area document for query later\r
*\r
// / /ns:MsaHeader/ns:ModuleType\r
// /\r
private static String normalizeQueryString(String[] exp, String from) {\r
- StringBuffer normQueryString = new StringBuffer(4096);\r
+ normQueryString.setLength(0);\r
\r
int i = 0;\r
while (i < exp.length) {\r
String newExp = from + exp[i];\r
- Pattern pattern = Pattern.compile("([^/]*)(/|//)([^/]+)");\r
- Matcher matcher = pattern.matcher(newExp);\r
+ Matcher matcher = xPathPattern.matcher(newExp);\r
\r
while (matcher.find()) {\r
String starter = newExp.substring(matcher.start(1), matcher\r