Iterator additional = current.getAdditionalNamespaces().iterator();
public List getAdditionalNamespaces() { return element.getAdditionalNamespaces(); }
@SuppressWarnings("unchecked") private List<Namespace> getElementAdditionalNamespaces(Element element) { return (List<Namespace>) element.getAdditionalNamespaces(); }
private void printAdditionalNamespaces(Writer out, Element element, NamespaceStack namespaces) throws IOException { List list = element.getAdditionalNamespaces(); if (list != null) { for (int i = 0; i < list.size(); i++) { Namespace additional = (Namespace)list.get(i); printNamespace(out, additional, namespaces); } } }
private void printAdditionalNamespaces(Writer out, Element element, NamespaceStack namespaces) throws IOException { List list=element.getAdditionalNamespaces(); if (list != null) { for (int i=0; i < list.size(); i++) { Namespace additional=(Namespace) list.get(i); printNamespace(out, additional, namespaces); } } }
private void printAdditionalNamespaces( Writer out, Element element, NamespaceStack namespaces ) throws IOException { List<?> list = element.getAdditionalNamespaces(); if ( list != null ) { for ( int i = 0; i < list.size(); i++ ) { Namespace additional = (Namespace) list.get( i ); printNamespace( out, additional, namespaces ); } } }
/** * Purging unused declarations is less optimal, performance-wise, than never adding them in the first place. So, we * should still ask the ROME guys to fix their code (not adding dozens of unnecessary module declarations). Having * said that: purging them here, before XML generation, is more efficient than parsing and re-molding the XML after * ROME generates it. * <p/> * Note that the calling app could still add declarations/modules to the Feed tree after this. Which is fine. But * those modules are then responsible for crawling to the root of the tree, at generate() time, to make sure their * namespace declarations are present. */ protected static void purgeUnusedNamespaceDeclarations(Element root) { java.util.Set usedPrefixes = new java.util.HashSet(); collectUsedPrefixes(root, usedPrefixes); List list = root.getAdditionalNamespaces(); List additionalNamespaces = new java.util.ArrayList(); additionalNamespaces.addAll(list); // the duplication will prevent a ConcurrentModificationException below for (int i = 0; i < additionalNamespaces.size(); i++) { Namespace ns = (Namespace) additionalNamespaces.get(i); String prefix = ns.getPrefix(); if (prefix != null && prefix.length() > 0 && !usedPrefixes.contains(prefix)) { root.removeNamespaceDeclaration(ns); } } }
private static List getElementsFromXPath(String fileName, String xpathExpr) { try { Document doc = getDocument(fileName); final XPath xpath = XPath.newInstance(xpathExpr); // must add the namespace and use it: there is no default namespace otherwise List<Namespace> namespaces = new ArrayList<Namespace>(); namespaces.add(doc.getRootElement().getNamespace()); List additionalNs = doc.getRootElement().getAdditionalNamespaces(); for (int i = 0; i < additionalNs.size(); i++) { Namespace namespace = (Namespace) additionalNs.get(i); xpath.addNamespace(namespace); } return xpath.selectNodes(doc); } catch (JDOMException e) { throw new RuntimeException("Can't get elements from file " + fileName + " for xpath " + xpathExpr, e); } }
public static void getPrefixes(Element element, String namespaceURI, List prefixes) { if (element.getNamespaceURI().equals(namespaceURI)) prefixes.add(element.getNamespacePrefix()); List namespaces = element.getAdditionalNamespaces(); for (Iterator itr = namespaces.iterator(); itr.hasNext();) { Namespace ns = (Namespace) itr.next(); if (ns.getURI().equals(namespaceURI)) prefixes.add(ns.getPrefix()); } if (element.getParentElement() != null) getPrefixes(element.getParentElement(), namespaceURI, prefixes); }
static void rawGetPrefixes(Element element, String namespaceURI, List<String> prefixes) { if (element.getNamespaceURI().equals(namespaceURI)) { prefixes.add(element.getNamespacePrefix()); } List<?> namespaces = element.getAdditionalNamespaces(); for (Iterator<?> itr = namespaces.iterator(); itr.hasNext();) { Namespace ns = (Namespace)itr.next(); if (ns.getURI().equals(namespaceURI)) { prefixes.add(ns.getPrefix()); } } if (element.getParentElement() != null) { rawGetPrefixes(element.getParentElement(), namespaceURI, prefixes); } } }
/** * Collect the namespaces from a JDOM Element. * @param element the source Element */ private void collectNamespaces(Element element) { Namespace ns = element.getNamespace(); if (ns != null && !prefixes.contains(ns.getPrefix())) { namespaces.add(ns); prefixes.add(ns.getPrefix()); } List others = element.getAdditionalNamespaces(); for (int i = 0; i < others.size(); i++) { ns = (Namespace) others.get(i); if (ns != null && !prefixes.contains(ns.getPrefix())) { namespaces.add(ns); prefixes.add(ns.getPrefix()); } } Object elementParent = element.getParent(); if (elementParent instanceof Element) { collectNamespaces((Element) elementParent); } }
/** * Indicates if a JDom document is an RSS instance that can be parsed with the parser. * <p/> * It checks for RDF ("http://www.w3.org/1999/02/22-rdf-syntax-ns#") and * RSS ("http://purl.org/rss/1.0/") namespaces being defined in the root element. * * @param document document to check if it can be parsed with this parser implementation. * @return <b>true</b> if the document is RSS1., <b>false</b> otherwise. */ public boolean isMyType(Document document) { boolean ok = false; Element rssRoot = document.getRootElement(); Namespace defaultNS = rssRoot.getNamespace(); List additionalNSs = rssRoot.getAdditionalNamespaces(); ok = (defaultNS != null) && defaultNS.equals(getRSSNamespace()); return ok; }
static void rawGetPrefixes(Element element, String namespaceURI, List<String> prefixes) { if (element.getNamespaceURI().equals(namespaceURI)) { prefixes.add(element.getNamespacePrefix()); } List<?> namespaces = element.getAdditionalNamespaces(); for (Iterator<?> itr = namespaces.iterator(); itr.hasNext();) { Namespace ns = (Namespace)itr.next(); if (ns.getURI().equals(namespaceURI)) { prefixes.add(ns.getPrefix()); } } if (element.getParentElement() != null) { rawGetPrefixes(element.getParentElement(), namespaceURI, prefixes); } } }
public static String rawGetPrefix(Element element, String namespaceURI) { if (element.getNamespaceURI().equals(namespaceURI)) { return element.getNamespacePrefix(); } List<?> namespaces = element.getAdditionalNamespaces(); for (Iterator<?> itr = namespaces.iterator(); itr.hasNext();) { Namespace ns = (Namespace)itr.next(); if (ns.getURI().equals(namespaceURI)) { return ns.getPrefix(); } } if (element.getParentElement() != null) { return rawGetPrefix(element.getParentElement(), namespaceURI); } return null; }
/** * Indicates if a JDom document is an RSS instance that can be parsed with the parser. * <p/> * It checks for RDF ("http://www.w3.org/1999/02/22-rdf-syntax-ns#") and * RSS ("http://purl.org/rss/1.0/") namespaces being defined in the root element. * * @param document document to check if it can be parsed with this parser implementation. * @return <b>true</b> if the document is RSS1., <b>false</b> otherwise. */ public boolean isMyType(Document document) { boolean ok = false; Element rssRoot = document.getRootElement(); Namespace defaultNS = rssRoot.getNamespace(); List additionalNSs = rssRoot.getAdditionalNamespaces(); ok = (defaultNS != null) && defaultNS.equals(getRSSNamespace()); return ok; }
public static String rawGetPrefix(Element element, String namespaceURI) { if (element.getNamespaceURI().equals(namespaceURI)) { return element.getNamespacePrefix(); } List<?> namespaces = element.getAdditionalNamespaces(); for (Iterator<?> itr = namespaces.iterator(); itr.hasNext();) { Namespace ns = (Namespace)itr.next(); if (ns.getURI().equals(namespaceURI)) { return ns.getPrefix(); } } if (element.getParentElement() != null) { return rawGetPrefix(element.getParentElement(), namespaceURI); } return null; }
public static String getPrefix(Element element, String namespaceURI) { if (element.getNamespaceURI().equals(namespaceURI)) return element.getNamespacePrefix(); List namespaces = element.getAdditionalNamespaces(); for (Iterator itr = namespaces.iterator(); itr.hasNext();) { Namespace ns = (Namespace) itr.next(); if (ns.getURI().equals(namespaceURI)) return ns.getPrefix(); } if (element.getParentElement() != null) return getPrefix(element.getParentElement(), namespaceURI); else return null; }
public boolean isMyType(Document document) { boolean ok = false; Element rssRoot = document.getRootElement(); Namespace defaultNS = rssRoot.getNamespace(); List additionalNSs = rssRoot.getAdditionalNamespaces(); ok = defaultNS!=null && defaultNS.equals(getRDFNamespace()); if (ok) { if (additionalNSs==null) { ok = false; } else { ok = false; for (int i=0;!ok && i<additionalNSs.size();i++) { ok = getRSSNamespace().equals(additionalNSs.get(i)); } } } return ok; }
private void setupNamespaces(Element element) { namespaceContext.setElement(element); if (prefix2decNs != null) { namespaceStack.push(prefix2decNs); } prefix2decNs = new HashMap<>(); namespaces.clear(); for (Iterator<?> itr = element.getAdditionalNamespaces().iterator(); itr.hasNext();) { declare((Namespace)itr.next()); } Namespace ns = element.getNamespace(); if (shouldDeclare(ns)) { declare(ns); } for (Iterator<?> itr = element.getAttributes().iterator(); itr.hasNext();) { ns = ((Attribute)itr.next()).getNamespace(); if (shouldDeclare(ns)) { declare(ns); } } }
private void setupNamespaces(Element element) { namespaceContext.setElement(element); if (prefix2decNs != null) { namespaceStack.push(prefix2decNs); } prefix2decNs = new HashMap<>(); namespaces.clear(); for (Iterator<?> itr = element.getAdditionalNamespaces().iterator(); itr.hasNext();) { declare((Namespace)itr.next()); } Namespace ns = element.getNamespace(); if (shouldDeclare(ns)) { declare(ns); } for (Iterator<?> itr = element.getAttributes().iterator(); itr.hasNext();) { ns = ((Attribute)itr.next()).getNamespace(); if (shouldDeclare(ns)) { declare(ns); } } }