craigmcc 01/08/13 11:59:46
Modified: digester/src/java/org/apache/commons/digester Digester.java
Log:
When namespace awareness is turned on, use "qName" (with the prefix)
instead of "localName" in the matching patterns. Otherwise, you cannot
disambiguate between an element with the same name that is defined in two
different namespaces.
Revision Changes Path
1.13 +16 -5
jakarta-commons/digester/src/java/org/apache/commons/digester/Digester.java
Index: Digester.java
===================================================================
RCS file:
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/Digester.java,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -r1.12 -r1.13
--- Digester.java 2001/08/08 03:03:00 1.12
+++ Digester.java 2001/08/13 18:59:46 1.13
@@ -1,7 +1,7 @@
/*
- * $Header:
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/Digester.java,v
1.12 2001/08/08 03:03:00 craigmcc Exp $
- * $Revision: 1.12 $
- * $Date: 2001/08/08 03:03:00 $
+ * $Header:
/home/cvs/jakarta-commons/digester/src/java/org/apache/commons/digester/Digester.java,v
1.13 2001/08/13 18:59:46 craigmcc Exp $
+ * $Revision: 1.13 $
+ * $Date: 2001/08/13 18:59:46 $
*
* ====================================================================
*
@@ -106,7 +106,7 @@
*
* @author Craig McClanahan
* @author Scott Sanders
- * @version $Revision: 1.12 $ $Date: 2001/08/08 03:03:00 $
+ * @version $Revision: 1.13 $ $Date: 2001/08/13 18:59:46 $
*/
public class Digester extends DefaultHandler {
@@ -714,6 +714,7 @@
bodyText.setLength(0);
// Compute the current matching rule
+ /*
if (!namespaceAware &&
((localName == null) || (localName.length() < 1)))
localName = qName;
@@ -721,9 +722,19 @@
match += "/" + localName;
else
match = localName;
+ */
+ StringBuffer sb = new StringBuffer(match);
+ if (match.length() > 0)
+ sb.append('/');
+ if (namespaceAware)
+ sb.append(qName);
+ else if ((localName == null) || (localName.length() < 1))
+ sb.append(qName);
+ else
+ sb.append(localName);
+ match = sb.toString();
// if (debug >= 3)
// log("startElement(" + match + ")");
-
// Fire "begin" events for all relevant rules
List rules = getRules().match(match);