LazyXmlParser(@Nonnull final Node entryNode) { assert "entry".equals(entryNode.getNodeName()); assert entryNode.getNodeType() == ELEMENT_NODE; this.entryNode = entryNode; }
@Nullable private String getTextValue(@Nonnull final Node node) { Node child = node.getFirstChild(); if (child != null && child.getNodeType() == TEXT_NODE) { return child.getNodeValue(); } return null; }
public static String getXmlNodeValue(Node node) { if (node.getNodeType() != Node.ELEMENT_NODE) { return null; } String ret = ""; NodeList textNodes = node.getChildNodes(); for (int i = 0; i < textNodes.getLength(); i++) { Node n = textNodes.item(i); if (n.getNodeType() == Node.TEXT_NODE && n.getNodeValue().replaceAll("[ \\n\\t\\r]", "").length() > 0) { ret += n.getNodeValue(); } else if (n.getNodeType() == Node.CDATA_SECTION_NODE) { ret += n.getNodeValue(); } } return ret.length() == 0 ? null : ret.replaceAll("^\\s+", "").replaceAll("\\s+$", ""); }
@Override public String getText() { final StringBuilder result = new StringBuilder(); final NodeList nodes = element.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { final Node child = nodes.item(i); if (child.getNodeType() == Node.TEXT_NODE) result.append(child.getNodeValue()); } return result.toString(); }
public static String getXmlNodeValue(NodeList list, String tagName, int idx) { if (list == null || list.getLength() <= idx) { return null; } Node node = list.item(idx); if (node.getNodeType() != Node.ELEMENT_NODE) { return null; } String ret = ""; NodeList textNodes = node.getChildNodes(); for (int i = 0; i < textNodes.getLength(); i++) { Node n = textNodes.item(i); if (n.getNodeType() == Node.TEXT_NODE && n.getNodeValue().replaceAll("[ \\n\\t\\r]", "").length() > 0) { ret += n.getNodeValue(); } else if (n.getNodeType() == Node.CDATA_SECTION_NODE) { ret += n.getNodeValue(); } } return ret.length() == 0 ? null : ret.replaceAll("^\\s+", "").replaceAll("\\s+$", ""); }
private void parseEntries(@Nonnull final Document document) { NodeList entryNodes = document.getElementsByTagName(ENTRY_TAG); if (entryNodes != null) { Node entryNode; for (int i = 0; i < entryNodes.getLength(); i++) { entryNode = entryNodes.item(i); assert entryNode != null; if (entryNode.getNodeType() == ELEMENT_NODE) { entries.add(new Entry(entryNodes.item(i))); } } Collections.reverse(entries); } } }
@Override public ImmutableList<XMLPacket> getChildren(final String name, final String namespace) { checkNotNull(name); checkNotNull(namespace); final ImmutableList.Builder<XMLPacket> result = ImmutableList.builder(); final NodeList nodes = element.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { final Node node = nodes.item(i); if (node.getNodeType() != Node.ELEMENT_NODE) { continue; } final Element element = (Element) node; if (!"*".equals(name) && !name.equals(element.getTagName())) { continue; } if (!"*".equals(namespace) && !namespace.equals(element.getNamespaceURI())) { continue; } result.add(new XMLPacketImplGWT(element)); } return result.build(); }
@Override public XMLPacket getFirstChild(final String name, final String namespace) { checkNotNull(name); checkNotNull(namespace); final NodeList nodes = element.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { final Node node = nodes.item(i); if (node.getNodeType() != Node.ELEMENT_NODE) { continue; } final Element element = (Element) node; if (!"*".equals(name) && !name.equals(element.getTagName())) { continue; } if (!"*".equals(namespace) && !namespace.equals(element.getNamespaceURI())) { continue; } return new XMLPacketImplGWT(element); } return null; }
@Override public void setText(final String text) { // TODO: remove ALL children? final NodeList nodes = element.getChildNodes(); for (int i = 0; i < nodes.getLength(); i++) { final Node child = nodes.item(i); if (child.getNodeType() == Node.TEXT_NODE) { element.removeChild(child); } } if (!Strings.isNullOrEmpty(text)) { element.appendChild(document.createTextNode(text)); } }