// scoping behavior when used with the Stack
// drop through on purpose
case END_TAG:
- ns = t.prefix==null?"":nss.get(t.prefix); // Get the namespace from prefix (if exists)
+ ns = t.prefix==null||nss==null?"":nss.get(t.prefix); // Get the namespace from prefix (if exists)
break;
default:
ns = "";
if(type==0) {
type=START_TAG;
}
- tag.state|=type; // add the appropriate Tag States
+ if(tag!=null) {
+ tag.state|=type; // add the appropriate Tag States
+ }
return tag;
}
for(Tag tag : t.attribs) {
if("xmlns".equals(tag.prefix)) {
if(newnss==null) {
- newnss = new HashMap<String,String>();
+ newnss = new HashMap<>();
if(nss!=null)newnss.putAll(nss);
}
newnss.put(tag.name, tag.value);
}
}
}
- return newnss==null?(nss==null?new HashMap<String,String>():nss):newnss;
+ //return newnss==null?(nss==null?new HashMap<String,String>():nss):newnss;
+ if(newnss==null) {
+ if(nss==null) {
+ newnss = new HashMap<>();
+ } else {
+ newnss = nss;
+ }
+ }
+ return newnss;
}
/**
*/
public void add(Tag attrib) {
if(attribs == null) {
- attribs = new ArrayList<Tag>();
+ attribs = new ArrayList<>();
}
attribs.add(attrib);
}